这是组件state
this.state = {
vcard: Map({
header: Map({
width: 0,
height: 30,
triangel: Map({
offset: 6,
width: 10,
height: 10
})
}),
repeatHeader: Map({
width: 0,
height: 30,
triangel: Map({
offset: 5,
width: 10,
height: 10
})
})
})
};
这是修改state值
let vcard = this.state.vcard.setIn(
["header"],
Map({
width: 0,
height: 30,
triangel: Map({
offset: 6,
width: 10,
height: 10
})
})
);
let newVcard = vcard.setIn(
["repeatHeader"],
Map({
width: 0,
height: 30,
triangel: Map({
offset: 6,
width: 10,
height: 10
})
})
);
this.setState((state, props) => ({
vcard: newVcard
}));
问题就是:setIn我现在是分开设置header和repeatHeader,有没有方法同时在setIn里面进行设置的啊?
merge
作用:浅合并,新数据与旧数据对比,旧数据中不存在的属性直接添加,就数据中已存在的属性用新数据中的覆盖
mergrWith
作用:自定义浅合并,可自行设置某些属性的值
mergeIn
作用:对深层数据进行浅合并
mergeDeep
作用:深合并,新旧数据中同时存在的的属性为新旧数据合并之后的数据
mergeDeepIn
作用:对深层数据进行深合并
mergrDeepWith
作用:自定义深合并,可自行设置某些属性的值
这里用一段示例彻底搞懂merge,此示例为Map结构,List与Map原理相同
链接:https://www.jianshu.com/p/0fa...