Javascript react native中未处理的承诺拒绝错误?
我正在使用axios从API端点获取数据。我收到错误->可能未处理的承诺拒绝类型错误:undefined不是函数(正在计算res.json()) 我正在将react-redux和redux-thunk与react-native应用程序一起使用 venueAction.js: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
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())