reactjs - 为应用程序创建单个 MobX 商店的最佳方式是什么?

标签 reactjs react-native redux mobx mobx-react

我使用 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;

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

还有其他/更好的方法吗?我考虑过将存储导入到不同的文件中,并将一些方法和数据放在类的原型(prototype)上。

最佳答案

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

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

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

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

class UserStore {...}
class TodosStore {...}

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

父级保存对子级的引用,每个子级都有对父级的引用。

关于reactjs - 为应用程序创建单个 MobX 商店的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43126615/

相关文章:

reactjs - 如何从react-icons包中缩放(大)字体很棒的图标

javascript - 在 react-admin 中访问 redux store

reactjs - 无法访问要打印到演示组件中的 reducer 状态值?

reactjs - 在 React 中使用列表和键时,键可以包含空格吗?

css - 使用 "as"属性时,带样式的组件不继承样式

android - Android 上 React Native 应用程序周围的粗黑边/边框

android - react-native-video [android] undefined 不是对象(评估 NativeModuels.UIManager.RCTVideo.Constants')

javascript - 功能性 React 组件中的全局作用域 prop

javascript - Redux 中的 "Reducer"可以默认返回初始状态和默认值吗?

javascript - react JS : Refactoring Redux Selectors