如何设置整个对象?

时间:2018-03-08 00:13:13

标签: javascript mobx

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某个地方是否有用于设置整个对象的实用方法?

2 个答案:

答案 0 :(得分:2)

我不知道是否有办法在mbox但在javascript本地人中执行此操作;在分配新属性之前,只需使用delete关键字删除所有旧属性:

Object.keys(obj).forEach(key => {
  delete obj[key]; 
});

Object.assign(obj, {bar: 7});

答案 1 :(得分:0)

我可能会建议你编写自己的实用工具方法,如果还没有。它可能看起来像这样;

{{1}}

然后使用它,你只需提供observable作为第一个参数,并提供一个包含你想要替换的所有键和值的对象。