Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/375.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.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 将来自axios.post的响应插入状态_Javascript_Reactjs_Axios - Fatal编程技术网

Javascript 将来自axios.post的响应插入状态

Javascript 将来自axios.post的响应插入状态,javascript,reactjs,axios,Javascript,Reactjs,Axios,我使用axios连接到我的api,并为船舶获取一系列图形文件。像这样: axios.get(`/api/serveEnemyShips/graphics-files/${shipId}/files`) .then((response) => { this.setState({ files: response.data }) }) 这可以工作并设置文件的状态 如果用户想要上传自定义图形,那么添加到此状态的最佳方式是什么 我最初只是使用axios.post上传飞船图片,然后根

我使用axios连接到我的api,并为船舶获取一系列图形文件。像这样:

axios.get(`/api/serveEnemyShips/graphics-files/${shipId}/files`)
  .then((response) => {
    this.setState({ files: response.data })
  })
这可以工作并设置文件的状态

如果用户想要上传自定义图形,那么添加到此状态的最佳方式是什么

我最初只是使用axios.post上传飞船图片,然后根据我的api执行另一个axios.get,但这似乎很昂贵

我希望我可以上传图片,然后将响应数据(来自axios post)插入我的状态,而不必在上传后再进行另一次axios.get


谢谢

你的最后一段听起来很合理。假设您获得了新创建的图形以响应post请求,您可以将其添加到处于状态的数组中。如果您没有在响应中获取数据,那么您很可能已经在本地拥有了所有数据,您可以使用这些数据

示例

axios.post(`/api/serveEnemyShips/graphics-files/${shipId}/files`, newFile)
  .then((response) => {
    this.setState(previousState => {
      return { files: [...previousState.files, response.data] };
    });
  });

谢谢,我需要在axios.post之前定义previousState吗?像这样:“var previousState=this.state”同样,返回的作用是什么?它是否返回一个新的文件数组或文件的新状态?再次感谢我在上面所做的,该函数的第一个参数是前一个状态。当您根据以前的状态更新状态时,最好使用函数变量
setState
。我想我明白了。但是我仍然需要做一些类似“const previousState=this.state”的事情,对吗?谢谢你不需要。使用以下语法可能会更清楚一些:
this.setState(函数(previousState){…})
。React调用函数,我们将第一个参数命名为
previousState