如何使用Mobx6制作RootStore

时间:2020-10-30 00:40:35

标签: reactjs mobx

所以mobx 6出局了,我正在尝试实现这样的基本存储:

export class AuthStore {
  rootStore
  value
  constructor(rootStore) {
    makeObservable(this, {
      value:observable
    })
    this.rootStore = rootStore
  }
}

class RootStore {
  constructor () {
    this.authStore = new AuthStore(this)
  }
}

const stores = new RootStore()

我收到一个错误:无法修饰未定义的属性:“值”

但是如果我将AuthStore带到RootStore之外

const authStore = new AuthStore()

一切正常..我尝试阅读更多的内容,然后再阅读mobx 6t文档,但没有任何内容

想知道我在做什么错! 谢谢!

1 个答案:

答案 0 :(得分:0)

答案在于错误消息-

无法修饰未定义属性:“值”

您的值为keywords,mobx对此表示怀疑。简单的解决方法是将您的值初始化为null:

undefined

很容易看出您为什么为此受害-mobx documentation itself实际上使您相信您所做的就是犹太洁食-

export class AuthStore {
  rootStore
  value = null;
  constructor(rootStore) {
    this.rootStore = rootStore

    makeObservable(this, {
      value:observable
    })
  }
}

但是,如果您尝试使用此代码,则会得到相同的错误:|。

如果我将AuthStore放在RootStore之外,那么一切正常

这让我有些烦恼-我无法解释为什么会发生这种情况!但是I couldn't reproduce it either-无论在什么地方初始化auth存储,我都会得到相同的行为。

更多背景信息-mobx在后台使用import { makeObservable, observable, computed, action } from "mobx" class Doubler { value constructor(value) { makeObservable(this, { value: observable, double: computed, increment: action }) this.value = value } get double() { return this.value * 2 } increment() { this.value++ } } 来尝试确定Object.getOwnPropertyDescriptor属性是什么-当值为value时,返回:

undefined