为什么我在redux中得到“中间件不是函数”?

时间:2017-05-20 01:48:33

标签: redux react-redux

我正在设置一个简单的React / Redux应用程序。这是我的设置:

var {createStore, applyMiddleware } = require('redux')
var thunkMiddleware = require('redux-thunk')
var store = createStore(
  reducers,
  applyMiddleware(thunkMiddleware)
)

class App extends React.Component {
  render() {
    return (
      <Provider store={store}>
        <HashRouter>
          <div className="app">
            <Route exact path='/' component={Home}/>
            <Route path='/Test' component={Test}/>
          </div>
        </HashRouter>
      </Provider>
    );
  }
}

此外,这是我的减速机:

var {combineReducers} = require('redux')

const carlist = (state=[], action) => {
  switch (action.type){
    case 'LOAD':
      return action.test
    default:
      return state
  }
}
module.exports = combineReducers({carlist})

当我运行我的应用程序时,我收到此错误:

  

applyMiddleware.js:39 Uncaught TypeError:中间件不是函数

我错过了什么?

2 个答案:

答案 0 :(得分:3)

问题看起来可能就在这里:

var thunkMiddleware = require('redux-thunk')

你的中间件 - 这里thunkMiddleware - 不是一个功能,暗示它没有被从包中拉出来。你应该试试:

var thunkMiddleware = require('redux-thunk').default

或者,尝试使用ES6模块语法(因为您已经在使用ES6功能):

import thunkMiddleware from 'redux-thunk'

答案 1 :(得分:0)

使用redux-logger

时出现此错误

我刚刚升级了我的包并更改了

import createLogger from 'redux-logger'

import { createLogger } from 'redux-logger'