javascript - React+Redux - 期望 reducer 是一个函数

标签 javascript reactjs redux react-router-redux

我正在尝试在我的通用应用程序中实现 redux,但 redux 遇到一些问题。 我有这个configureStore函数:

import { createStore, applyMiddleware, compose } from 'redux';
import thunkMiddleware from 'redux-thunk';
import createLogger from 'redux-logger'
import rootReducer from '../reducers/index';
import { routerMiddleware } from 'react-router-redux';

export default function configureStore(history, initialState) {
  const reduxRouterMiddleware = routerMiddleware(history);
  let finalCreateStore;

  if (__DEVELOPMENT__ && __CLIENT__ && __DEVTOOLS__) {
    const { persistState } = require('redux-devtools');
    const DevTools = require('../containers/DevTools/DevTools');

    finalCreateStore = compose(
      applyMiddleware(thunkMiddleware)(createStore),
      window.devToolsExtension ? window.devToolsExtension() : DevTools.instrument(),
      persistState(window.location.href.match(/[?&]debug_session=([^&]+)\b/))
    )(createStore);
  }
  else {
    finalCreateStore = applyMiddleware(thunkMiddleware)(createStore);
  }

  const store = finalCreateStore(rootReducer, initialState);

  if (__DEVELOPMENT__ && module.hot) {
    module.hot.accept(rootReducer, () => {
      store.replaceReducer(rootReducer);
    });
  }

  return store;
}

然后我的 rootReducer 文件如下所示:

import { combineReducers } from 'redux';
import environment from './environment';
import general from './general';
import alert from './alert';
import user from './user';
import { routerReducer } from 'react-router-redux'


const rootReducer = combineReducers({
  environment,
  general,
  alert,
  user,
  routing: routerReducer
});

export default rootReducer;

问题是我收到此错误:预期 reducer 是一个函数。 我在 StackOverflow 上进行了谷歌搜索(其中有一些类似的问题),但答案不适用于我的情况。

那么,我做错了什么?为什么?

谢谢。

最佳答案

试试这个:

finalCreateStore = compose(
    // you write more than one createStore here
    applyMiddleware(thunkMiddleware),
    window.devToolsExtension ? window.devToolsExtension() : DevTools.instrument(),
    persistState(window.location.href.match(/[?&]debug_session=([^&]+)\b/))
)(createStore);

关于javascript - React+Redux - 期望 reducer 是一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37047264/

相关文章:

php - 从 php 返回的 JSON 是 [object Object] 并且 jQuery.parseJSON 是 null

javascript - Adobe ExtendScript Toolkit 查找对象的属性和方法

javascript - 警告 : Cannot update during an existing state transition

javascript - REACT - REDUX 如何更新子组件中 redux 应用程序的全局状态,子组件在安装应用程序时在父组件中获取数据

javascript - React - Redux State 更新但未在组件中渲染

javascript - 如何在 React 网站中使用中型小部件

javascript - 如何设置选项文本 :selected in jquery

arrays - React 重新渲染循环

reactjs - 将帮助文本传递给 redux-form

javascript - 如何创建 React 路由器重定向 url