You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 15:05:35