javascript - 如何在 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
解决方案
来自mobx文档:
observe(user.name, listener)
与 根本不同observe(user, "name", listener)
。第一个观察value
内部的电流user.name
(可能根本不是可观察的),后者观察 的name
属性user
。
所以解决办法是改变你观察这个物体的方式
observe(this.data.ipfs, () => {
console.log("NEW IPFS CONFIG");
})
重要提示:每次更新 的值时ipfs
,都应添加新的观察值,如下所示
推荐阅读
- sql-server - 字符串的排序规则和数据类型不兼容
- javascript - React Native Expo错误:只能在函数组件的主体内部调用挂钩
- azure-ad-b2c - Authn请求签名
- oauth-2.0 - SSO WPF 和 SPA
- kubernetes - 移除 Kubernetes 就绪探针
- bluetooth - 是否可以将数据写入 BLE 广播设备?
- python - 是否可以从文件中传递 python 行为命令行参数
- javascript - vue和react中的功能相同,但在react中不起作用
- javascript - JavaScript/浏览器中的事件处理
- python - 如何在 TF2 中构建具有容差的自定义精度指标?