我有一个Mobx根商店,其中有一些子商店。我有什么办法可以只将根存储传递给React组件,并从该组件访问子存储的值,就像该属性位于根目录中一样。我的确切意思是,例如,我有根存储A及其子存储B。子存储B具有属性C。从我的react组件中,我想通过编写A.C轻松访问C属性。因此,我希望我的根存储区能够累积所有子存储区的价值。我该如何实现?也许这是使用mobx的错误方式?谢谢
答案 0 :(得分:1)
不要这样做。那是一个主要的反模式,如果最后要将它们合并为一个,为什么还要有多个存储(多个对象)?因此,通过拥有多个商店,您将拥有一个separation of concerns。每个商店都拥有自己的数据和操作该数据的方法。
根存储区仅用于将所有存储区放在一个对象中,因此组件可以轻松访问所需的存储区。
同样,如果属性名称和方法在多个不同的存储库中合并,则可能会发生冲突。
调试也要困难得多。
答案 1 :(得分:0)
我大部分都同意Ivan V.的回答,但是在某些情况下,您可能想“汇总” Root商店或其他商店中的某些东西。
例如,您可能想要执行以下操作:
class RootStore {
constructor() {
this.usersStore = new UsersStore(this);
this.messagesStore = new MessagesStore(this);
}
@computed
get totalInfo() {
return `${this.usersStore.items.length} users and ${this.messagesStore.items.length} messages`
}
}