//修改 – 任何的修改都会返回一个新的对象
//set/setIn/update/updateIn
let obj = { id: 1, name: '张三', user: { age: 20 } }
let istate = fromJS(obj)
let newState = istate.set('name', '李四') //李四
//toJS方法 就是把immutable对象转为原生js对象
console.log(newState.toJS());
// set 设置值 不需要原值 update设置值 可以在保留原值的基础上 修改
// set直接覆盖 update在保留原值的基础上直接追加
let newState1 = istate.update('name', v => '李四@@' + v) //'李四@@张三'
console.log(newState1.toJS());
//深层数据修改
let setAge = istate.setIn(['user', 'age'], 30) //30
console.log(setAge.toJS());
let setAge1 = istate.updateIn(['user', 'age'], v => v + 1) //21
console.log(setAge1.toJS());
//删除
let obj = { id: 1, name: '张三', user: { age: 20 } }
//普通对象删除属性
delete obj['name']
let istate = fromJS(obj)
let newState = istate.removeIn(['name'])
console.log(newState.toJS());
//合并对象
let obj1 = { id: 1, name: '张三' }
let obj2 = { id: 20, name: '李四' }
let istate1 = fromJS(obj1)
let istate2 = fromJS(obj2)
//如果两者有相同字段 则以后合并的方法字段为准