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

Redux Store报错:无有效Reducer(combineReducers使用问题)

问题原因与解决方案

错误原因

你在userSlice.js中默认导出了整个createSlice返回的slice对象,但combineReducers要求传入的对象值必须是reducer函数,而非slice对象,这就导致store无法识别有效的reducer,从而抛出错误。

修复步骤

1. 修改userSlice.js的导出

将默认导出从整个slice对象改为slice内部的reducer属性:

import { createSlice } from "@reduxjs/toolkit";

const initialState = {
  loginState: false,
  accessToken: "",
  userId: "",
};

const userSlice = createSlice({
  name: "userReducer",
  initialState,
  reducers: {
    setLogin: (state, action) => {
      state.loginState = true;
      state.accessToken = action.payload;
    },
  },
});

export const { setLogin } = userSlice.actions;
// 改为导出reducer属性
export default userSlice.reducer;

2. 简化store.js代码(可选但推荐)

Redux Toolkit的configureStore会自动帮你合并reducers,不需要手动调用combineReducers,直接传入reducer对象即可:

import { configureStore } from "@reduxjs/toolkit";
// 导入时可以给reducer起个更清晰的名字
import userReducer from "./slices/userSlice";

const store = configureStore({
  reducer: {
    user: userReducer // 这里的key是state中的命名空间,比如state.user
  },
});

export default store;

如果坚持使用combineReducers,修改store.js中导入的reducer后也能正常工作:

import { configureStore, combineReducers } from "@reduxjs/toolkit";
import userReducer from "./slices/userSlice";

const rootReducer = combineReducers({
  user: userReducer,
});

const store = configureStore({
  reducer: rootReducer,
});

export default store;

内容的提问来源于stack exchange,提问作者skwFE

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 21:50:28