我开始使用mobx和react-native,并尝试将一个大型商店拆分成一堆较小的商店。基于@observables / @computed的一个或多个其他商店,在一个商店中强制运行某些东西的正确方法是什么?我试过这个,虽然依赖于AppStore中的@observable,自动运行正常,但当它依赖于来自AuthStore的@observable时它会停止工作。
class AuthStore {
@observable loggedIn = false
}
class AppStore {
constructor(authStore) {
this.authStore = authStore
}
initialize = autorun(() => {
if (this.authStore && this.authStore.loggedIn) {
console.log("Do some work now that we're signed in...")
}
}
}
我怀疑它不起作用,因为自动运行在其他商店实例化之前被初始化了?什么是正确的模式?
答案 0 :(得分:0)
实际上,我意识到我可以通过将initialize的定义移动到构造函数来修复上面的例子,如下所示:
constructor(authStore) {
this.authStore = authStore
this.initialize = autorun(() => {
if (this.authStore.loggedIn) {
console.log("Do some work now that we're signed in...")
}
}
}
不过,我想知道这是正确的做法吗?或者这种事情有更好的模式吗?