【问题标题】:How to use observe in observable objects in MobX如何在 MobX 的可观察对象中使用观察
【发布时间】:2020-04-02 16:25:54
【问题描述】:

这是我第一次接触 MobX,在这个项目中,我有一个非常简单的任务,data 是和 @observable,我订阅了 graphql,我需要 observe 获取特定的数据的变化。我有这个自动取款机:

 @persist("object") @observable public data: IPlayer | null = null;

@action public async syncData(now = Date.now()) {
    sub.subscribe(res => {
      if (res?.data?.player) {
        this.data = res?.data?.player;
        console.log(`this.data: ${JSON.stringify(this.data, null, 2)}`);

      observe(this.data, "ipfs", () => {
        console.log("NEW IPFS CONFIG");
      })
      }
    });
  }

订阅工作正常,this.data 更新了值,但是 this.data.ipfs 是一个非常大的嵌套对象,如果我更改其中的某些内容,它不会触发 observe

【问题讨论】:

    标签: javascript node.js reactjs observable mobx


    【解决方案1】:

    来自mobx 文档:

    observe(user.name, listener)observe(user, "name", listener) 根本不同。第一个观察user.name 中的当前value(可能根本不是可观察的),后者观察username 属性。

    所以解决办法是改变你观察这个物体的方式

    observe(this.data.ipfs, () => {
       console.log("NEW IPFS CONFIG");
    })
    

    重要提示:每次更新ipfs 的值时,都应添加新的观察结果,如下所示

    【讨论】:

    • 谢谢,我会在再次选择这个问题时尝试一下
    猜你喜欢
    • 2020-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-25
    • 1970-01-01
    • 2016-10-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多