首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有mobx store的可重用子组件,我是否应该引用父store到子store?

具有mobx store的可重用子组件,我是否应该引用父store到子store?
EN

Stack Overflow用户
提问于 2018-02-12 04:25:12
回答 1查看 714关注 0票数 1

我正在构建一个React小部件,它有一个父组件和两个子组件,每个子组件都有自己的存储。

代码语言:javascript
复制
<Parent>
  <ChildA />
  <ChildB />
</Parent>

我需要子组件是可重用的。但是,这两个子存储都有一些它们需要父存储的可观察/计算的变量。我应该将父商店传递给子商店吗?

代码语言:javascript
复制
parentStore = new ParentStore();
childStore = new ChildStore(parentStore);

我不确定这是否是最佳实践。这不是意味着调用此子组件的每个其他父组件都必须持有完全相同的变量名吗?

EN

回答 1

Stack Overflow用户

发布于 2018-02-26 05:07:39

首先,有两种流行的方法可以在商店之间共享状态。

您已经展示了其中之一:将一个store作为参数传递给另一个store。

第二种方法(也是我认为最好的)是设置一个"rootStore“,它将为其他商店提供一个通用的作用域:

代码语言:javascript
复制
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传递数据呢?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48736092

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档