【发布时间】:2022-01-17 03:49:40
【问题描述】:
我在 react 中使用 mobx(6.3.12) 管理状态。 但我无法观察到物体的深层变化。
这是我的来源。
- 商店
class ApiStore {
values = {
name: '',
author: '',
}
constructor() {
makeObservable(this, {
values: observable,
setValues: action
})
}
setValues(key, value) {
values[key] = value;
}
}
-
观察(并非所有工作)
store = new ApiStore(); useEffect(() => { console.log(values); }, [store.values]); store = new ApiStore(); useEffect(() => { autorun(() => console.log(store.values)); }, []) -
状态变化
... <NormalTextValue onChange={(e) => store.setValues(id, e.target.value)} value={store.values[id]}/>
我意识到无法理解深刻的变化是原因。 可以通过取消引用访问它们来检测更改。 (例如 [store.values.name])
所以我将其更改为以下以获得所需的结果。
setValues(key, value) {
this.values[key] = value;
this.values = {...this.values};
}
问: 根据文档,可观察的默认选项称为 .deep。 所以我想我可以自动检测到 对象(通过 this.values[key] = values)。 但似乎必须更改对象的参考值。 能否请您解释一下或指出错误?
【问题讨论】:
标签: reactjs observable mobx