反应redux调度程序“操作必须是普通对象”错误

时间:2018-01-30 14:12:07

标签: javascript reactjs redux

运行此部分时返回错误“Actions must be plain objects. Use custom middleware for async actions.

这是我的代码:

export function login(data) {
  const login_data = new FormData();

  login_data.append('username', data.username);
  login_data.append('password', data.password);
  login_data.append('grant_type', 'password');
  login_data.append('scope', 'read');

  return dispatch => {
    console.log("LOGIN DISPATCHER");
    axios.defaults.headers.common['Authorization'] = 'Basic ' + btoa('mobapp:SSSSS');
    return axios.post('http://172.16.79.25:9999/oauth/token', login_data)
    .then(res => {
      const token = res.data.access_token;
      localStorage.setItem('access_token', token);
      setAuthorizationToken(token);
      dispatch(setCurrentUser(token));
    });
  }
}
  

console.log(“LOGIN DISPATCHER”)永远不会在此代码中运行!!

1 个答案:

答案 0 :(得分:3)

你的动作实际上返回一个函数,而不是“普通”redux需要的普通对象。

您需要添加一些中间件来处理此类操作,例如redux-thunk

以下是示例设置:

import thunk from 'redux-thunk';

const store = createStore(
  reducers,
  applyMiddleware(thunk)
);