如何更新嵌套不可变映射中的值

How to update value in a nested Immutable map

我是 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');

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

我从未使用过不可变,但在我看来,文档好像在说您想要更像这样的东西:

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

您传递的是集合而不是 运行 带有点运算符的函数。

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

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

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

您可以使用 setIn 而不是改变状态,因为这将为您 return 提供一个新的副本,因此您可以执行以下操作:

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

您可以在 Facebook Github

上阅读更多内容