SetState将新数据推送到状态数组对象

时间:2017-04-14 04:44:37

标签: javascript reactjs

我想对API端点进行POST,这里有一个名为space_photos的字段,它接受对象数组。

每当用户上传照片时,这都是我的回调功能。

constructor(){
this.space_photo_holder = [];
}

callback = (e) => {

    this.space_photos_holder.push(e);

    this.setState({space_photos: this.space_photos_holder})

}

我认为代码是合法的,但还有更好的方法吗?

2 个答案:

答案 0 :(得分:1)

您可以简单地使用spread运算符。建议在constructor中设置初始状态,并在新状态基于先前状态时使用setState的功能版本。

constructor(){
  this.state = { space_photos: [] };
}

callback = (e) => {
  this.setState((state) => { space_photos : [...state.space_photos, ...e]})
}

此外,您可以使用cancat方法。

callback = (e) => {
  this.setState((state) => { space_photos : state.space_photos.cancat([e]) });
}

答案 1 :(得分:1)

您只需使用concat代替推送即可。它返回一个更新的数组

constructor(){
    this.state = {
      space_photos= []
    }
}

callback = (e) => {

    this.setState({space_photos: this.state.space_photos.concat(e)})

}