Javascript react native中未处理的承诺拒绝错误?

Javascript react native中未处理的承诺拒绝错误?,javascript,reactjs,react-native,axios,Javascript,Reactjs,React Native,Axios,我正在使用axios从API端点获取数据。我收到错误->可能未处理的承诺拒绝类型错误:undefined不是函数(正在计算res.json()) 我正在将react-redux和redux-thunk与react-native应用程序一起使用 venueAction.js: import { FETCH_VENUES } from './types'; import axios from 'axios'; export const fetchVenues = () => dispatch

我正在使用axios从API端点获取数据。我收到错误->可能未处理的承诺拒绝类型错误:undefined不是函数(正在计算res.json())

我正在将react-redux和redux-thunk与react-native应用程序一起使用

venueAction.js:

import { FETCH_VENUES } from './types';
import axios from 'axios';

export const fetchVenues = () => dispatch => {
    axios.get(`my_api_link`)
    .then( res => res.json())
    .then( venues => 
        dispatch({
            type: FETCH_VENUES,
            payload: venues
        })
    )
    .catch( error => {
        console.log(error);
    });
};
查看下面的屏幕截图:


需要在响应上调用
json()
。Axios反而实现了,这意味着您不需要这样做

axios.get(`my\u api\u link`)
。然后(场馆=>{
...
});

Axios是一个Javascript库,用于从node.js或浏览器的XMLHttpRequests发出http请求,它支持js ES6固有的Promise API。fetch()的另一个特性是它可以自动转换JSON数据

如果使用.fetch(),则在处理JSON数据时有两个步骤。第一个是发出实际请求,然后第二个是对响应调用.json()方法

-杰森·阿诺德中音


好了,现在你知道了不要像这样编写axios代码:

export const fetchVenues = () => dispatch => {
    axios.get(`my_api_link`)
    .then( res => res.json())
    .then( venues => 
        dispatch({
            type: FETCH_VENUES,
            payload: venues
        })
    )
    .catch( error => {
        console.log(error);
    });
}; 
现在怎么办?尝试使用ES8异步/等待语法,如下所示:

export const fetchVenues = () => async dispatch => {
      try {
        const url = 'http://api.funwithredux.com/';
        let { data } = await axios.get(url);
        dispatch({ type: FETCH_VENUES, payload: data });
        console.log(data);
      } catch (e) {
        console.log(e);
      }
    };

正如您所见,如果您愿意,您可以使用try/catch语句捕获任何错误,我肯定会添加控制台日志,以确保您也从API端点获取数据。

因此,如果我删除
,那么(res=>res.json())
它工作正常:)他的获取技术没有问题。不需要在个人偏好之外进行异步/等待。他只需要删除
。然后(res=>res.json())