Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 设置state将新数据推送到state数组对象_Javascript_Reactjs - Fatal编程技术网

Javascript 设置state将新数据推送到state数组对象

Javascript 设置state将新数据推送到state数组对象,javascript,reactjs,Javascript,Reactjs,我想发布到API端点,有一个名为space_photos的字段,它接受对象数组 这是每当用户上传照片时我的回调函数 constructor(){ this.space_photo_holder = []; } callback = (e) => { this.space_photos_holder.push(e); this.setState({space_photos: this.space_photos_holder}) } 我认为代码是合法的,但是有没有更好

我想发布到API端点,有一个名为space_photos的字段,它接受对象数组

这是每当用户上传照片时我的回调函数

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

callback = (e) => {

    this.space_photos_holder.push(e);

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

}

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

您可以简单地使用扩展运算符。建议在
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]) });
}

您可以简单地使用扩展运算符。建议在
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]) });
}

您可以简单地使用concat而不是push。它返回一个更新的数组

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

callback = (e) => {

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

}

您可以简单地使用concat而不是push。它返回一个更新的数组

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

callback = (e) => {

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

}

concat更干净。concat更干净。仅尝试此操作,但此操作无效,阵列将始终为一个。我想推动阵列而不是替换它们。你是对的,因为你没有更改空间\u照片\u支架阵列,所以这不起作用。使用更新的方法如果您尝试了此方法,则此方法无效,数组将始终为1。我想推动阵列而不是替换它们。你是对的,因为你没有更改空间\u照片\u支架阵列,所以这不起作用。使用更新的方法