简体   繁体   English

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

[英]SetState to push new data to the state array object

I want to do a POST to an API endpoint, there's a field called space_photos, it accept array of objects. 我想对API端点执行POST,有一个名为space_photos的字段,它接受对象数组。

this is my callback func whenever user uploaded a photo. 每当用户上传照片时,这就是我的回调函数。

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

callback = (e) => {

    this.space_photos_holder.push(e);

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

}

I think the code is legit but is there any better way to do it? 我认为代码是合法的,但是还有更好的方法吗?

You can simply use spread operator. 您可以简单地使用传播运算符。 It's recommended to set initial state in constructor and use the functional version of setState when the new state is based on the previous state. 当新状态基于先前状态时,建议在constructor函数中设置初始状态并使用setState的功能版本。

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

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

Also, you can use cancat method. 另外,您可以使用cancat方法。

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

You can simply use concat instead of push. 您可以简单地使用concat而不是push。 It returns a updated array 它返回一个更新的数组

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

callback = (e) => {

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

}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM