【问题标题】:What is the best way to create a single MobX store for an app?为应用创建单个 MobX 商店的最佳方式是什么?
【发布时间】:2017-03-30 19:17:08
【问题描述】:

我已经使用 MobX 和 Redux 大约 6 个月了。我发现对于大多数应用程序,我更喜欢 MobX 的简单性。不过,我喜欢 Redux 的单一存储概念。我听到其他人评论说他们使用 MobX 创建了一个故事,我正在尝试确定最佳方式。目前我创建了多个商店,然后将它们导入到一个商店中。

class UiStore {
  @observable uiData;

  constructor() {
    this.uiData = {}
  }

  @action updateUI = (data) => {
    this.uiData = {
      data: data
    };
  }
}

let uiStore = new UiStore();
export default uiStore;
class Store {
  @observable currentUser;

  constructor() {
    this.auth = authStore;
    this.ui = uiStore;
  }

}

let store = new store();
export default store;

在这里,我基本上创建了单独的 store,然后将它们组合成一个 store,类似于 redux reducer 的工作方式。

还有其他/更好的方法吗?我考虑过可能将 a store 导入到不同的文件中,并将一些方法和数据放在类的 prototype 上。

【问题讨论】:

    标签: reactjs react-native redux mobx mobx-react


    【解决方案1】:

    我使用 MobX 已经一年多了,我基本上也是这样做的:

    1) 我有一个“主”或“父”商店,通常命名为class Store {...}

    2)然后我有一些较小的商店保存在“主”商店中。

    3) 我更喜欢在主存储构造函数中构建子存储。此外,我发现有时我的子存储必须观察父存储的一些数据,所以我将this 传递给子构造函数:

    class UserStore {...}
    class TodosStore {...}
    
    class Store {
      constructor() {
        this.user = new UserStore(this);
        this.todos = new TodosStore(this);
      }
    }
    

    Parent 保留对子项的引用,每个子项都有对父项的引用。

    【讨论】:

    • 太棒了。感谢您的反馈!
    • 如何将特定存储注入到组件中?你能详细说明你的答案吗?
    • 我已经发布了我的问题here。请您看一下并回答问题吗?
    猜你喜欢
    • 2012-11-29
    • 2013-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多