javascript - 多个 Axios 请求进入 ReactJS 状态

标签 javascript reactjs axios

所以我一直在我的 React JS 组件中放置以下代码,我基本上是在尝试将两个 API 调用都置于一个名为 vehicles 的状态中,但是我收到以下代码的错误:

componentWillMount() {

    // Make a request for vehicle data

    axios.all([
      axios.get('/api/seat/models'),
      axios.get('/api/volkswagen/models')
    ])
    .then(axios.spread(function (seat, volkswagen) {
      this.setState({ vehicles: seat.data + volkswagen.data })
    }))
    //.then(response => this.setState({ vehicles: response.data }))
    .catch(error => console.log(error));
  }

现在我猜我不能像我有 this.setState({ vehicles: seat.data + volkswagen.data }) 那样添加两个数据源,但是还有什么办法可以做到这一点?我只想将该 API 请求中的所有数据都置于一种状态。

这是我收到的当前错误:

TypeError: Cannot read property 'setState' of null(…)

谢谢

最佳答案

您不能将数组“相加”。使用 array.concat 函数 ( https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/concat ) 将两个数组连接成一个,然后将其设置为状态。

componentWillMount() {

   // Make a request for vehicle data

   axios.all([
     axios.get('/api/seat/models'),
     axios.get('/api/volkswagen/models')
   ])
   .then(axios.spread(function (seat, volkswagen) {
     let vehicles = seat.data.concat(volkswagen.data);
     this.setState({ vehicles: vehicles })
   }))
   //.then(response => this.setState({ vehicles: response.data }))
   .catch(error => console.log(error));

}

关于javascript - 多个 Axios 请求进入 ReactJS 状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38529553/

相关文章:

vue.js - 如何访问 Nuxt.js 中 axios 插件内部的当前 fullPath?

javascript - 如何处理好友在线并在mini facebook有信息时立即发送通知

javascript - 在javascript中使用窗口["variable"+ i]

reactjs - React js 中输入字段值未更新

drupal - 向 Drupal 发出的 Axios 身份验证请求 - invalid_grant

javascript - 无法访问数据请求 Axios、React-Redux

javascript - datatables.net 中的复杂 header

javascript - 在 React 中将 className 添加到 Fragment 的解决方法

reactjs - 如何在饼图中添加工具提示?

reactjs - 无法导入 react-addons-shallow-compare,Typescript