如何更新嵌套不可变映射中的值
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');
您传递的是集合而不是 运行 带有点运算符的函数。
setIn
不会改变原来的 state
,但是它 returns 你是另一个所以你基本上有
state = state.setIn(['name', 'value'], 'Test');
您可以使用 setIn
而不是改变状态,因为这将为您 return 提供一个新的副本,因此您可以执行以下操作:
state = state.setIn(['name', 'value'], 'Test');
您可以在 Facebook Github
上阅读更多内容
我是 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');
您传递的是集合而不是 运行 带有点运算符的函数。
setIn
不会改变原来的 state
,但是它 returns 你是另一个所以你基本上有
state = state.setIn(['name', 'value'], 'Test');
您可以使用 setIn
而不是改变状态,因为这将为您 return 提供一个新的副本,因此您可以执行以下操作:
state = state.setIn(['name', 'value'], 'Test');
您可以在 Facebook Github
上阅读更多内容