我一直在使用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减速器的工作原理。
还有其他/更好的方法吗?我想过可能会将商店导入到不同的文件中,并将一些方法和数据放在类prototype
上。
答案 0 :(得分:15)
我现在使用MobX一年+我基本上也这样做:
1)我有一个"主人"或者"父母"商店通常命名为class Store {...}
2)然后我有一些较小的商店保存在" master"存储。
3)我更喜欢在master&#store存储构造函数中构建子存储。此外,我发现有时我的子商店必须从父商店观察一些数据,所以我将this
传递给子构造函数:
class UserStore {...}
class TodosStore {...}
class Store {
constructor() {
this.user = new UserStore(this);
this.todos = new TodosStore(this);
}
}
Parent保留对子项的引用,每个子项都引用parent。