首页 > 解决方案 > 第二个和随后的结果都不起作用

问题描述

只有第一个then有效。每个后续then都不起作用。

 export const usersFetchData = (url) => {
 return (dispatch) => {
    dispatch(userIsLoading(true));

    axios
        .get(url)
        .then(res => {
            if(!res.ok){
                throw Error(res.statusText)
            }
            dispatch(userIsLoading(false));
            console.log(res.data);
            return res;    
        })
        .then(res => res.json())
        .then(users => {
            console.log(users);
            dispatch(usersFetchDataSuccess(users))})
        .catch(() => dispatch(userHasErrored(true)));
}
}

标签: javascriptreactjsredux

解决方案


axios为您将其转换为 JSON,您不必像在fetch

export const usersFetchData = (url) => {
 return (dispatch) => {
  dispatch(userIsLoading(true));

  axios
    .get(url)
    .then(res => {
        if(!res.ok){
            throw Error(res.statusText)
        }
        dispatch(userIsLoading(false));
        console.log(res.data);
        return res.data; // returning the json respone    
    })
    //.then(res => res.json()) // removed this, you don't need it
    .then(users => {
        console.log(users);
        dispatch(usersFetchDataSuccess(users))
    })
    .catch(() => dispatch(userHasErrored(true)));
 }
}

推荐阅读