在一个动作中反应多个api调用

时间:2018-02-02 17:42:50

标签: reactjs redux react-redux

刚开始使用redux并遇到一个我觉得很难处理的问题。

我有一个API调用(使用Axios)来获取一些数据

onFormSubmit(e){
 e.preventDefault();
 this.props.fetchTracks(this.state.term);
}

行动档案 -

export function fetchTracks(term){

  var params = {
   api_key: API_KEY,
  };

   const request = axios.get(URL, { params: params });

   return {
    type: FETCH_TRACKS,
    payload: request
  }
}

减速机 -

export default function (state = [] , action) {
  switch(action.type) {
   case FETCH_TRACKS:
    return [action.payload.data, ...state];
  }

 return state;
}

目前,一切都很好,我按预期得到了数据。 从这一点开始,我想从我刚刚做过的API调用中获取一些数据,并使用这些数据对另一个URL进行另一个API调用。

我该怎么办?在当前操作中有另一个API调用吗?有另一个动作?

基本上,我应该如何使用相同的操作处理两个API调用?

1 个答案:

答案 0 :(得分:3)

由于axios使用promises,你可以链接它们

return axios.get(...)
.then((response) => {
     return axios.get(...); // using response.data
})
.then((response) => {
      return {
          type: FETCH_TRACKS,
          payload: response.data;
      };
});

https://github.com/axios/axios/issues/708