微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用Mobx6制作RootStore

如何解决如何使用Mobx6制作RootStore

所以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文档,但没有任何内容

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

解决方法

答案在于错误消息-

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

您的值为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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。