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

前端之家收集整理的这篇文章主要介绍了javascript – 多个Axios请求进入ReactJS状态前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
所以我一直在我的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相关文章