Reactjs 使用不变性助手在特定索引处推送新对象

Reactjs 使用不变性助手在特定索引处推送新对象,reactjs,react-native,immutability-helper,Reactjs,React Native,Immutability Helper,我尝试过这样做: const rowObj = {key: value}; const rowIndex = 2; this.setState({ data: update(this.state.data, { [rowIndex] : { $push : [rowObj] } } ) }) 但是,它抛出如下错误: Uncaught Error: update(): expected targ

我尝试过这样做:

 const rowObj = {key: value};
    const rowIndex = 2;

    this.setState({ 
          data: update(this.state.data, 
              { [rowIndex] : { $push : [rowObj] } }
          ) 
    })
但是,它抛出如下错误:

Uncaught Error: update(): expected target of $push to be an array; got undefined.

由于您希望推送到数组(即数据),因此不希望指定索引并像这样写入

const rowObj = {key: value};

this.setState({ 
      data: update(this.state.data, 
           { $push : [rowObj] } 
      ) 
})
或者,如果要为数组中的特定索引设置值,则应使用
$set

const rowObj = {key: value};
const rowIndex = 2;

this.setState({ 
      data: update(this.state.data, 
          { [rowIndex] : { $set : rowObj } }
      ) 
})

像这样试试

const rowArray = [{key: value},{key: value},{key: value}];
const obj = {key: value}
const rowIndex = 2;
rowArray.splice(rowIndex, 0, obj);
this.setState({ data: update(this.state.data,{rowArray : {$set : rowArray}} ) });

但在我的例子中,我需要在特定索引上插入新行。。我不能用$set。。是否可以使用推送?是否有其他不使用循环的选项?bcz我的行数据长度大约是5000+,因为这个.state.data[rowIndex]是未定义的,在你推之前不是数组,它会给你一个错误,为什么你不能使用set[{id:1,rowId:“rw153431859379599d449”,序列:1,cl1534318588226572647:“asd”,cl153431852290af581:“test”},{id:2,rowId:“rw1534318593795aea780”,sequence:2,cl1534318588226572647:null,cl15343185882290af581:null},{id:16,rowId:“RW153439933085AE919C”,sequence:3,cl1534318588226572647:null,cl15343185882290af581:null}]@SagarChavada,从示例数据中可以看到此.state.data[rowIndex]不是数组,但对象上不支持对象和推送属性,如果要合并属性Brilliant bro.,则应使用$set或$merge。。这正是我要找的。