好的,我有一个非常标准的对象列表。
const list = Immutable.List([{type:'thang',data:{id:'pants'}}]);
现在我想把裤子换成短裤......所以我在想
list.setIn([0,'data','id'],'shorts');
唉
Error: invalid keyPath
这是怎么做到的?
我甚至无法解决这个问题,尽管有一段时间不知所措:/一旦我知道如何做到这一点,我想知道如何在某个位置添加新元素
list.setIn([0,'data','length'],'short');
将新长度属性添加到列表中位置0的数据对象。
答案 0 :(得分:2)
我的坏。我在创建Immutable结构时遇到了问题。如果我改变
const list = Immutable.List([{type:'thang',data:{id:'pants'}}]);
到
const list = Immutable.fromJS([{type:'thang',data:{id:'pants'}}]);
然后我可以
list.setIn([0,'data','id'],'shorts');
答案 1 :(得分:1)
我们的嵌套结构化数据:
#import "myCustomUIViewClass.h"
@implementation myCustomUIViewClass
- (id)initWithFrame:(CGRect)frame;
{
self = [super initWithFrame:frame];
if (self) {
self.backgroundColor = [UIColor blueColor];
}
return self;
}
@end
需要不可变
const state = {
Persons: [
{
fname: 'J.R.R',
lname: 'Tolkin',
},
{
fname: 'jack',
lname: 'London',
}
]
};
将简单对象转换为地图
const { fromJS } = require('immutable')
从嵌套结构中获取数据
const stateMapped = fromJS(state);
以嵌套结构设置数据
console.log(stateMapped.getIn(['Persons', 0, 'fname']))//output: J.R.R