如何使用ImmutableJS Map设置嵌套数组中项的属性
How to set a property of an item in nested array using ImmutableJS Map?
必须避免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
可以很好地处理"映射"answers"列表"。从你所写的内容来看,问题似乎是,你实际上并没有处理深刻的不可变结构。注意,创建immutable.Map
(如)
immutable.Map({a: {b: 'c'}})
创建具有关键字'a'
和值{b: 'c'}
的不可变Map(作为普通JS对象)!难怪,那个不可变的getIn
不能和它一起工作
要使结构完全不可变,请使用immutable.fromJS
(这可能是您想要使用的)。
相关文章:
- 如何在不链接/jquery的情况下使用方法应用css属性数组
- 如何使用lodash返回与模式匹配的属性数组
- 从嵌套属性数组中获取对象嵌套值
- 如何使用 javascript 返回数据属性数组
- JQuery 获取返回的属性数组
- 对公共属性数组进行排序
- Angularjs-ng repeat不反映属性数组中的更改
- JADE&NodeJS访问JSON对象属性数组
- Lodash 按数组的属性数组过滤
- 将对象数组转换为属性数组
- 如何从一个共享属性的jQuery集合中获取一个属性数组
- 骨干移除和新视图不会重置其属性数组内容
- 使用JSON从对象数组创建属性数组
- 将数据属性数组转换为对象
- 从属性数组和匹配属性值数组创建JavaScript对象的有效方法
- 访问json中的属性数组
- jquery.获得没有重复的自定义属性数组
- 如何更新对象属性数组值
- 多属性数组语法
- jQuery:生成"name”;动态属性数组