使用mobx创建多个商店并将其注入到组件的正确方法-ReactJs
如Mobx 文档中的建议,我以以下方式创建了多个商店:
class bankAccountStore { constructor(rootStore){
this.rootStore = rootStore;
}
...
class authStore {
constructor(rootStore){
this.rootStore = rootStore;
}
...
最后以以下方式
。另外,我更喜欢在master商店构造函数中构造子商店。此外,我发现有时我的子存储必须观察父存储的一些数据,因此我将其传递给子构造函数
class RootStore { constructor() {
this.bankAccountStore = new bankAccountStore(this);
this.authStore = new authStore(this);
}
}
以下方式 :
<Provider rootStore={new RootStore()}> <App />
</Provider>
然后像这样 :
@inject('rootStore') @observer
class User extends React.Component{
constructor(props) {
super(props);
//Accessing the individual store with the help of root store
this.authStore = this.props.rootStore.authStore;
}
}
回答:
这个答案可能是有道理的,但可以间接地帮助社区。
经过大量研究,我看到许多人在实践中使用以下方法。常规方法具有一个根存储,该根存储可以充当存储之间的通信通道。
// Root Store Declarationclass RootStore {
constructor() {
this.userStore = new UserStore(this);
this.authStore = new AuthStore(this);
}
}
const rootStore = new RootStore()
// Provide the store to the children
<Provider
rootStore={rootStore}
userStore={rootStore.userStore}
authStore={rootStore.authStore}
>
<App />
</Provider>
// Injecting into the component and using it as shown below@inject('authStore', 'userStore')
@observer
class User extends React.Component {
// only this.props.userStore.userVariable
}
class RootStore { constructor() {
this.userStore = new UserStore(this);
this.authStore = new AuthStore(this);
}
}
const rootStore = new RootStore()
<Provider rootStore={rootStore}>
<App />
</Provider>
// Injecting into the component and using it as shown below@inject(stores => ({
userStore: stores.userStore,
authStore: stores.authStore,
})
)
@observer
class User extends React.Component {
// no this.props.rootStore.userStore,userVariable here,
// only this.props.userStore.userVariable
}
方法1和方法2除了语法差异外没有其他差异。好的!那是注射部分!
export class AuthStore { constructor(rootStore) {
this.rootStore = rootStore
@computed get dependentVariable() {
return this.rootStore.userStore.changeableUserVariable;
}
}
}
我希望这对社区有所帮助。有关更详细的讨论,您可以参考我在Github上提出的问题
以上是 使用mobx创建多个商店并将其注入到组件的正确方法-ReactJs 的全部内容, 来源链接: utcz.com/qa/430293.html