React Redux错误:动作必须是普通对象。使用自定义中间件进行异步操作

时间:2019-03-05 17:13:57

标签: reactjs react-redux react-router-v4

我正在使用Redux尝试使用新的react-router-v4,偶然发现了以下错误: “动作必须是普通对象。对异步动作使用自定义中间件。”

store.js:

export const history = createHistory();
const enhancers = [];
const middleware = [
  thunk,
  routerMiddleware(history)
]
if (process.env.NODE_ENV === "development") {
  const devToolsExtension = window.__REDUX_DEVTOOLS_EXTENSION__;
  if (typeof devToolsExtension === "function") {
    enhancers.push(devToolsExtension())
  }
}
const composedEnhancers = compose(
  applyMiddleware(...middleware),
  ...enhancers
)
const store = createStore(
  rootReducer(history),
  initialState,
  composedEnhancers
)
export default store;

动作:

export function loadAllDataSuccess(data) {
  return {
    type: types.LOAD_DATA_SUCCESS,
    data
  }
}

// thunk
export function loadAllData() {
  return function(dispatch) {
    return getData().then((data) => {
      dispatch(loadAllDataSuccess(data));
    });
  };
}

index.js:

store.dispatch(loadAllData());

ReactDOM.render((
    <Provider store={store}>
        <ConnectedRouter history={history}>
            <App />
        </ConnectedRouter>
    </Provider>
), document.getElementById('root'));

我的Chrome浏览器表明错误是由ConnectedRouter history = {history}造成的。

我遵循了一些在线指南,现在我对如何使其运行感到非常困惑

0 个答案:

没有答案