我怎样才能在外面使用axios的响应数据?

时间:2018-02-05 09:32:52

标签: javascript reactjs axios

我目前的功能如下:

import axios from 'axios';

export const GET_LOCATIONS = 'GET_LOCATIONS';

export function fetchLocals() {

    const request = axios.get('http://localhost:3001/api')
    .then(function(response) {
        console.log(response.data)
    })
    .catch(function (error) {
        console.log(error);
    });

    return {
        type: GET_LOCATIONS, 
        payload: request
    };
}

我希望能够获得response.data之外的内容,以便我可以访问其信息并发布它们!

1 个答案:

答案 0 :(得分:0)

只需从response.data句柄返回.then,就可以了:

export function fetchLocals() {

    const request = axios.get('http://localhost:3001/api')
      .then(function(response) {
        console.log(response.data);
        return response.data;
      })
      .catch(function (error) {
        console.log(error);
        return Promise.reject(error);
      });

    return {
        type: GET_LOCATIONS, 
        payload: request
    };
}

现在您可以像这样调用函数:

fetchLocals().payload
  .then(data => {
    // `data` will be `response.data` here
  });

请注意,Promise.reject句柄中需要catch调用,以便后续处理程序识别被拒绝的承诺。