Redux中间件与configureStore:Next不是一个函数

9 浏览
0 Comments

Redux中间件与configureStore:Next不是一个函数

我正在尝试向我的Redux中添加自定义中间件(我正在使用configureStore)。

const reducer = {
    layout: layout,
    login: login,
    companies: companies,
    services: services,
    platforms: platforms,
    report: report,
    users: users,
    stats: stats,
    version: version,
}
const logger = store => next => action => {
    console.log('dispatching', action)
    let result = next(action)
    console.log('next state', store.getState())
    return result
}
const store = configureStore({
    reducer,
    middleware: (getDefaultMiddleware) => getDefaultMiddleware().concat(logger())
});

但是我遇到了Uncaught TypeError: next is not a function错误。无法找到使用configureStore的可行示例。

我使用的软件包是:

"react-redux": "^8.0.2",
"redux": "^4.2.0",
"redux-thunk": "^2.4.1",

更新 #1

我按照提示进行了如下修改:

const reducer = {
    layout: layout,
    login: login,
    companies: companies,
    services: services,
    platforms: platforms,
    report: report,
    users: users,
    stats: stats,
    version: version,
    wizard: wizard,
}
const logger = store => next => action => {
    console.log('dispatching', action)
    let result = next(action)
    console.log('next state', store.getState())
    return result
}
const middlewareLogger = logger(store)(next)(action);
const store = configureStore({
    reducer,
    middleware: (getDefaultMiddleware) => getDefaultMiddleware().concat(middlewareLogger())
});
export default store;

但是我遇到了以下错误:

src/reducers/index.js
  Line 33:40:  'next' is not defined    no-undef
  Line 33:46:  'action' is not defined  no-undef

0
0 Comments

原因:问题出现的原因是在调用logger()时,应该是调用logger

解决方法:将logger()改为logger。最后的代码如下:

const store = configureStore({
    reducer,
    middleware: (getDefaultMiddleware) => getDefaultMiddleware().concat(logger)
});

这样问题就解决了。

0