# Model相关API

# 创建Model

# BaseModel

Class模式定义Model

每一个Model构造函数都应继承自BaseModel;

其中BaseModel会提供getModelInstance的protected实例方法:

declare class BaseModel {
    protected getModelInstance: GetModelInstance;
}

# createModel

CompositionAPI模式定义Model

其中BaseModel会提供getModelInstance的protected实例方法:

type FNModelConstructor<T> = (ctx: {
    getModelInstance: GetModelInstance;
}) => T;

declare function createModel<T>(fn: FNModelConstructor<T>): FNModelCreator<T>;

# getModelInstance

当你需要在一个Model中访问全局存在的另一个Model实例的时候,请使用getModelInstance。 getModelInstance并不会创建一个新的Model实例,而是将当前全局已实例化的Model实例返回

# 使用Model

# useModel

每一个Model在组件中使用的时候,都是全局单例的存在;且Model的生命周期跟随组件生命周期保持一致。

当使用useModel时,vue-apollo-model会在全局store中创建一个新的Model单例,或更新Model单例的引用计数; 当使用Model的组件销毁后,vue-apollo-model会对计数进行更新; 当引用计数为0时,vue-apollo-model会销毁对应Model实例。