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。。这正是我要找的。