我正在构建一个React小部件,它有一个父组件和两个子组件,每个子组件都有自己的存储。
<Parent>
<ChildA />
<ChildB />
</Parent>我需要子组件是可重用的。但是,这两个子存储都有一些它们需要父存储的可观察/计算的变量。我应该将父商店传递给子商店吗?
parentStore = new ParentStore();
childStore = new ChildStore(parentStore);我不确定这是否是最佳实践。这不是意味着调用此子组件的每个其他父组件都必须持有完全相同的变量名吗?
发布于 2018-02-26 05:07:39
首先,有两种流行的方法可以在商店之间共享状态。
您已经展示了其中之一:将一个store作为参数传递给另一个store。
第二种方法(也是我认为最好的)是设置一个"rootStore“,它将为其他商店提供一个通用的作用域:
class RootStore {
constructor() {
this.userStore = new UserStore(this);
this.todoStore = new TodoStore(this);
}
}
class UserStore {
constructor(rootStore) {
this.rootStore = rootStore
}
getTodos(user) {
return this.rootStore.todoStore.todos.filter(todo => todo.author === user)
}
}
class TodoStore {
@observable todos = []
constructor(rootStore) {
this.rootStore = rootStore
}
}通过这种方式,您可以保持所有商店的链接。
另一方面,你说你的组件需要可重用,如果是这样的话,也许你不应该直接将它附加到存储上,为什么不使用props传递数据呢?
https://stackoverflow.com/questions/48736092
复制相似问题