我正在尝试将一个新项目推入一个深层嵌套的不可变记录中。

  const i = Immutable.Record({
    nested: new (Immutable.Record({
      someKey: [{id:1,name:'adam'}, {id:2,name:'steve'}],
    })),
  });
  const myMap = new i;
  const myNewMap = myMap.updateIn(['nested', 'someKey'], (fav)=>    fav.push({id:3,name:'dan'}));

  console.log(myNewMap.toJS());


我期望的是使用新值更新嵌套列表,但实际输出为

  [object Object] {
  nested: [object Object] {
    someKey: 3
    }
  }


所以我做错了什么,那么我将如何使用新值更新记录?

这是示例的jsbin
http://jsbin.com/nipolimuyu/edit?html,js,console

最佳答案

您在传递给return的函数中缺少updateIn语句(请注意Array.push不会返回结果数组!)。它应该是:

const myNewMap = myMap.updateIn(
  ['nested', 'someKey'],
  (fav) => {
    fav.push({id:3,name:'dan'})
    return fav
  })

09-30 16:35