import {observable} from 'mobx';
let obj = observable({foo: 5});
这将创建一个带有名为foo
的属性的可观察对象。如果我这样做,
obj.foo = 9;
将按预期跟踪更改。
但是,我想覆盖所有 obj
的值?我怎样才能做到这一点?比如,如何将其设置为{bar: 7}
?
obj = {bar: 7}
显然不会工作,因为我只是用不可观察的方式取而代之。
Object.assign(obj, {bar:7})
不会摆脱foo
财产。
在mobx
某个地方是否有用于设置整个对象的实用方法?
答案 0 :(得分:2)
我不知道是否有办法在mbox
但在javascript
本地人中执行此操作;在分配新属性之前,只需使用delete
关键字删除所有旧属性:
Object.keys(obj).forEach(key => {
delete obj[key];
});
Object.assign(obj, {bar: 7});
答案 1 :(得分:0)
我可能会建议你编写自己的实用工具方法,如果还没有。它可能看起来像这样;
{{1}}
然后使用它,你只需提供observable作为第一个参数,并提供一个包含你想要替换的所有键和值的对象。