如何更新嵌套的Immutable地图中的值

时间:2017-12-01 17:31:23

标签: reactjs redux immutable.js immutable-collections

我是immutable.js的新手,并试图想出一种更新嵌套地图的方法

这是我的对象

let state = OrderedMap({
    'name': Map({ id: 'name', hint: 'Search by name', value: '' }),
    'job': Map({ id: 'job', hint: 'Search by job title', value: ''}),
    'state':  Map({ id: 'state', hint: 'Search by state', value: ''})
});

我正在尝试使用setIn函数

设置'name'对象的值
state.setIn(['name', 'value'], 'Test');

该值未按预期更新。我在这里遗漏了什么

3 个答案:

答案 0 :(得分:2)

setIn不会改变原始的state,但是它会返回另一个,所以你基本上会有

state = state.setIn(['name', 'value'], 'Test');

答案 1 :(得分:1)

我从来没有使用过不可变的东西,但在我看来,就像文档说你想要的东西更像:

setIn(state, ['name', 'value'], 'Test');

传递集合的地方,而不是使用点运算符在其上运行函数。

https://facebook.github.io/immutable-js/docs/#/setIn

答案 2 :(得分:1)

而不是改变状态你可以使用setIn,因为这将返回一个新的副本,所以你可以这样做:

state = state.setIn(['name', 'value'], 'Test');

您可以在Facebook Github

上阅读更多内容