You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

28 lines
1.2 KiB

// 组合子模块(根组件)
// 封装统一导出的供业务使用的方法
import React from 'react'
import { ListStore } from "./list.Store";
import { CounterStore } from "./counter.Store"
// 1.声明一个 RootStore
class RootStore {
constructor() {
// 对子模块进行实例化操作
// 将来实例化根 RootStore 的时候,根 RootStore 有两个属性,分别是 CounterStore 和 ListStore,各自对应的值就是导入的子模块实例对象
this.counterStore = new CounterStore()
this.listStore = new ListStore()
}
}
// 实例化操作
RootStore = new RootStore()
// 使用 react context 机制,完成统一的方法封装
// 通过 Provider value={传递的数据} 的查找机制:当调用 useContext,优先从 Provider value 找,如果找不到,就会 createContext 方法传递过来的默认参数
const context = React.createContext(RootStore)
// 这个方法作用:通过 useContext 拿到 RootStore 实例对象,然后返回,所以只要在业务组件中,调用 useStore(),将获得一个跟实例对象 RootStore
const useStore = () => React.useContext(context)
export { useStore }