3

我试图这样做:

 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.
4

2 回答 2

2

像这样试试

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}} ) });
于 2018-08-21T06:07:41.303 回答
1

由于您想推送到数组即数据,因此您不想指定索引并将其写入

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 } }
      ) 
})
于 2018-08-16T05:49:32.853 回答