Javascript 如何按键更新嵌套的immutable.js映射中的多个项?
我正在使用REACT+REDUX并使用immutable.js 所以我有一个处于状态的结构Javascript 如何按键更新嵌套的immutable.js映射中的多个项?,javascript,redux,immutable.js,Javascript,Redux,Immutable.js,我正在使用REACT+REDUX并使用immutable.js 所以我有一个处于状态的结构 const jobs = Immutable.OrderedMap({ job1: Immutable.Map({name: 'job1Name', guid: 123, status: 'in progress'}), job2: Immutable.Map({name: 'job2Name', guid: 432, status: 'completed'}), job3: Immutab
const jobs = Immutable.OrderedMap({
job1: Immutable.Map({name: 'job1Name', guid: 123, status: 'in progress'}),
job2: Immutable.Map({name: 'job2Name', guid: 432, status: 'completed'}),
job3: Immutable.Map({name: 'job3Name', guid: 555, status: 'in progress'})
})
我在减速机里有这个有效载荷
const payload = Map({id: 'job1', status: 'completed'}, {id: 'job3', status: 'completed'});
如何得到这个
const jobs = Immutable.OrderedMap({
job1: Immutable.Map({name: 'job1Name', guid: 123, status: ' completed'}),
job2: Immutable.Map({name: 'job2Name', guid: 432, status: 'completed'}),
job3: Immutable.Map({name: 'job3Name', guid: 555, status: 'completed'})
})
我认为这与
merge()
或mergeIn()
有关,但我不确定如果您只想更新状态
字段,那么类似的操作将起作用:
const jobs=Immutable.OrderedMap({
job1:Immutable.Map({name:'job1Name',guid:123,状态:'in progress'}),
job2:Immutable.Map({name:'job2Name',guid:432,状态:'completed'}),
job3:Immutable.Map({name:'job3Name',guid:555,状态:'in progress'})
})
常量有效负载=不可变。列表([
{id:'job1',状态:'completed'},
{id:'job3',状态:'completed'}
]);
常量减速机=(状态、有效负载)=>
payload.reduce((memo,{id,status})=>memo.update(id,j=>j.set(“status”,status)),state);
console.log(reducer(jobs,payload).toJS())
非常感谢,这对我很有帮助