我是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');
该值未按预期更新。我在这里遗漏了什么
答案 0 :(得分:2)
setIn
不会改变原始的state
,但是它会返回另一个,所以你基本上会有
state = state.setIn(['name', 'value'], 'Test');
答案 1 :(得分:1)
我从来没有使用过不可变的东西,但在我看来,就像文档说你想要的东西更像:
setIn(state, ['name', 'value'], 'Test');
传递集合的地方,而不是使用点运算符在其上运行函数。
答案 2 :(得分:1)
而不是改变状态你可以使用setIn
,因为这将返回一个新的副本,所以你可以这样做:
state = state.setIn(['name', 'value'], 'Test');
您可以在Facebook Github
上阅读更多内容