API 参考
Store 创建
createStore
创建store实例
createStore(
modules?: Modules,
lazyModules: LazyStoreModules,
options?: {
middlewares?: Middleware[],
interceptors?: Interceptor[],
}
) => Store;
Store 实例方法
NaturContext 2.2.0+
import {Provider} from 'natur';
function App() {
return (
// 这个store将被优先应用在 inject/useInject/useStore等API中
<Provider store={store}>
{ /* other code */ }
</Provider>
)
}
createUseStore 2.2.0+
const useStore = createUseStore(() => store);
// 在某个组件内
// 优先从Context中获取store
const store = useStore();
// 在某个组件内
getModule
获取模块
store.getModule('moduleName') => InjectStoreModule
setModule
初始化/设置模块
store.setModule('moduleName', StoreModule) => Store;
removeModule
移除模块
store.removeModule('moduleName') => Store;
setLazyModule
初始化/设置懒加载模块
store.setLazyModule('moduleName', () => Promise<StoreModule>) => Store;
removeLazyModule
移除懒加载模块
store.removeLazyModule('moduleName') => Store;
hasModule
判断当前已加载模块中是否存在某模块
store.hasModule('moduleName') => boolean;
loadModule
加载某懒加载模块, 如果该模块已经加载则 返回已经加载的模块
store.loadModule('moduleName') => Promise<InjectStoreModule>;
getOriginModule
获取未包装的模块
store.getOriginModule('moduleName') => StoreModule;
getLazyModule
获取懒加载模块的加载函数
store.getLazyModule('moduleName') => () => Promise<StoreModule>;
subscribe
订阅/监听模块
export type ModuleEvent = {
type: 'init' | 'update' | 'remove',
actionName?: string,
};
export interface Listener {
(me: ModuleEvent): any;
}
store.subscribe('moduleName', listener: Listener) => Function;
subscribeAll 2.2.0+
订阅/监听所有模块
export type ModuleEvent = {
type: 'init' | 'update' | 'remove',
actionName?: string,
moduleName: string,
};
export interface AllListener {
(me: ModuleEvent): any;
}
store.subscribeAll(listener: AllListener) => Function;
getAllModuleName
获取所有模块的模块名
store.getAllModuleName('moduleName') => string[];
dispatch
执行action
store.dispatch(moduleName, actionName, ...actionArg: any[]) => ReturnType<Action>;