mobx商店如何对另一个mobx商店的可观察物做出反应?

时间:2018-01-02 00:55:29

标签: react-native mobx mobx-react

我开始使用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...")
    }
  }
}

我怀疑它不起作用,因为自动运行在其他商店实例化之前被初始化了?什么是正确的模式?

1 个答案:

答案 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...")
    }
  }
}

不过,我想知道这是正确的做法吗?或者这种事情有更好的模式吗?