Redux Thunk + Axios“操作必须是普通对象。使用自定义中间件进行异步操作。”

时间:2017-06-14 03:17:55

标签: reactjs redux react-redux axios redux-thunk

我一直在查看stackoverflow上类似的问题/解决方案几个小时,但似乎没有一个解决我的问题。基本上我正在尝试设置Redux Thunk,以便在我的操作中进行API调用,如下所示:

export function loadUserInfo(){
    return function(dispatch){
        return axios.get('/api/auth/GetUsername', config).then(response=>{
        dispatch(loadUserSuccess(response.data.username));
    }).catch(function(error){
        throw(error);
    });
};

我在“axios”之前尝试过使用和不使用return语句,但是我一直收到以下错误:

  

“操作必须是普通对象。使用自定义中间件进行异步操作。”

我相信我已经正确配置了我的中间件:

export default function configureStore(initialState){
    return createStore(
        rootReducer,
        initialState,
        applyMiddleware(thunk, reduxImmutableStateInvariant())
);} 

2 个答案:

答案 0 :(得分:0)

我相信你的问题在于格式化;你试图在返回的thunk上捕获失败的承诺。

type = "response"

答案 1 :(得分:0)

dispatch(loadUserSuccess(response.data.username))
  • 您正在将函数loadUserSuccess传递给dispatch,因此loadUserSuccess必须返回一个对象。
  • loadUserSuccess(response){ return {type:"success", payload:response} }
  • 这样的东西。通过这个减速器可以知道已经发送了哪个动作。