Redux使用combineReducers报错:reducer为必填参数问题求助
问题
我正在学习Redux官方教程,使用combineReducers时遇到异常。不使用该函数时代码运行正常,但将单个reducer传入combineReducers后,出现报错:
Uncaught Error: "reducer" is a required argument, and must be a function or an object of functions that can be passed to combineReducers
相关store代码如下:
import {configureStore , combineReducers} from "@reduxjs/toolkit" import { applyMiddleware } from "redux"; import thunk from "redux-thunk"; import { composeWithDevTools } from "redux-devtools-extension"; import { productReducer } from "./reducers/productReducer"; const rootReducer = combineReducers({ products:productReducer }); let initialState = {}; const middleware = [thunk]; const store = configureStore( rootReducer, initialState, composeWithDevTools(applyMiddleware(...middleware)) ); export default store;
解决方案
问题出在**configureStore的调用方式错误**——Redux Toolkit的configureStore接收的是一个配置对象,而非分散的参数,你误用了Redux传统createStore的传参逻辑。
修改后的正确代码:
import { configureStore, combineReducers } from "@reduxjs/toolkit" import thunk from "redux-thunk"; import { productReducer } from "./reducers/productReducer"; const rootReducer = combineReducers({ products: productReducer }); let initialState = {}; const store = configureStore({ reducer: rootReducer, preloadedState: initialState, // Redux Toolkit默认已集成thunk,若需额外中间件可这样追加 middleware: (getDefaultMiddleware) => getDefaultMiddleware().concat(thunk), // 无需手动引入composeWithDevTools,configureStore默认启用DevTools devTools: true }); export default store;
额外提示:
- Redux Toolkit的
configureStore默认包含redux-thunk,如果不需要自定义中间件,甚至可以省略middleware配置项 - 无需再单独引入
applyMiddleware和composeWithDevTools,configureStore已封装了这些常用逻辑
内容的提问来源于stack exchange,提问作者Gautam Jain
相关产品推荐
相关产品推荐

