Immutable.js updateIn不适用于普通对象吗?

时间:2017-12-07 14:14:38

标签: javascript immutable.js

文档声明它应该有效:

  

普通JavaScript对象或数组可以嵌套在Immutable.js集合中,updateIn()也可以更新这些值,通过应用更改创建这些值的新副本来对其进行不可变处理。

但是,以下代码不起作用:

import { Map } from 'immutable';
let m = new Map({a: {b: 5}})
m = m.updateIn(["a", "b"], x => x + 1);
console.log(m);

例外Error: invalid keyPath。使用fromJS代替new Map的代码相同。

我是否误解了文档或为什么我的代码无效?

编辑:似乎此功能是4.0.0的新功能,默认情况下未安装。

1 个答案:

答案 0 :(得分:0)

我正在使用Immutable 4.0.0-rc.9

嗯,它可以在控制台中使用。您可能需要考虑尝试导入import Immutable from 'immutable';可能是ES6 Mapimport { Map }发生冲突。我不确定,如果不是这样,请纠正我。



let m = Immutable.Map({a: {b: 5}})
m = m.updateIn(["a", "b"], x => x + 1);
console.log(m);

<script src="https://cdnjs.cloudflare.com/ajax/libs/immutable/4.0.0-rc.9/immutable.js"></script>
&#13;
&#13;
&#13;