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

jha*_*amm 3 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>
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

另外,这是我的减速器:

var {combineReducers} = require('redux')

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

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

applyMiddleware.js:39 Uncaught TypeError: middleware is not a function

我错过了什么?

小智 5

问题看起来可能在这里:

var thunkMiddleware = require('redux-thunk')

你的中间件——这里thunkMiddleware——不是一个函数,表明它没有从包中被拉出。你应该试试:

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

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

import thunkMiddleware from 'redux-thunk'