首页 > 解决方案 > 如何在 MobX 的可观察对象中使用观察

问题描述

这是我第一次接触 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

标签: javascriptnode.jsreactjsobservablemobx

解决方案


来自mobx文档:

observe(user.name, listener)与 根本不同observe(user, "name", listener)。第一个观察value内部的电流user.name(可能根本不是可观察的),后者观察 的name属性user

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

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

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


推荐阅读