将axios.post的响应插入状态

时间:2018-07-11 18:28:02

标签: javascript reactjs axios

我使用axios连接到我的api并获得了一堆用于运输的图形文件。像这样:

axios.get(`/api/serveEnemyShips/graphics-files/${shipId}/files`)
  .then((response) => {
    this.setState({ files: response.data })
  })

这有效并设置文件的状态。

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

起初我只是使用axios.post上传飞船图形,然后针对我的api执行另一个axios.get,但这似乎很昂贵。

我希望我可以上传图形,然后将响应数据(来自axios帖子)插入到我的状态中,而不必在上传后再执行另一个axios.get。

谢谢!

1 个答案:

答案 0 :(得分:2)

您的最后一段听起来很合理。授予您响应帖子请求的新创建图形的权限,您可以将其添加到处于状态的数组中。如果您没有在响应中获取数据,则很可能已经在本地拥有了所有数据,可以使用。

示例

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