gpt4 book ai didi

javascript - 如何使用 ImmutableJS Map 设置嵌套数组中项目的属性?

转载 作者:行者123 更新时间:2023-11-28 06:10:14 26 4
gpt4 key购买 nike

必须避免state对象中的任何突变。您能否建议如何使用 Immutable.Map() 按 rowId 更改行文本?

setIn 函数在这种情况下似乎不适用于 Map?

var state = {
pages: [
{
tiles: [
{
rows: [
{rowId: 'row1', text: 'text1'},
{rowId: 'row2', text: 'text2'},
{rowId: 'row3', text: 'text3'}
//...
]
},
{
//...
}
//...
]
}
//...
]
};

function onRowUpdateAction(state, rowId, rowText) {
var map = Immutable.Map(state);
//TODO: Update row text by row id ?

return map.toObject();
}
var newState = onRowUpdateAction(state, 'row2', 'updatedText');

提前致谢!

最佳答案

setIn 可以很好地与 map 和列表配合使用。从你写的内容来看,问题似乎是,你实际上并没有处理深度不可变的结构。请注意,创建 immutable.Map 例如

immutable.Map({a: {b: 'c'}})

使用键 'a' 和值 {b: 'c'} 创建不可变的 Map(作为普通 JS 对象)!难怪,immutable 的 getIn 不适用于它。

要使结构深度不可变,请使用 immutable.fromJS (这可能就是您想要使用的)。

关于javascript - 如何使用 ImmutableJS Map 设置嵌套数组中项目的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36473143/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com