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

Expo SDK52项目升级Redux后出现combineReducers未定义错误求助

问题原因

Redux 5.x 对核心包做了重大变更:combineReducers、applyMiddleware、createStore 这些传统 API 已从 redux 核心包中移除,转而推荐使用 Redux Toolkit 作为官方标准开发方案。你的代码仍在从 redux 导入这些已不存在的函数,因此抛出 undefined 错误。

解决方案

方案一:迁移到 Redux Toolkit(推荐)

Redux Toolkit 是官方主推的 Redux 开发方式,内置了 thunk 中间件、状态切片管理等功能,代码更简洁且维护性更强。

  1. 安装 Redux Toolkit(若尚未安装):
npm install @reduxjs/toolkit
# 或
yarn add @reduxjs/toolkit
  1. 修改 src/ducks/store.js 代码:
import { configureStore } from '@reduxjs/toolkit';
// 导入你的各个 reducer,示例:
// import userReducer from './userReducer';
// import cartReducer from './cartReducer';

export default configureStore({
  reducer: {
    // 直接传入 reducer 对象,无需手动调用 combineReducers
    // user: userReducer,
    // cart: cartReducer,
  },
});
  • configureStore 会自动添加 thunk 中间件,无需手动配置 applyMiddleware(thunk)。
  • 若需自定义中间件,可通过 middleware 参数扩展。

方案二:继续使用传统 API(不推荐)

若暂时不想迁移到 Redux Toolkit,可安装 redux-legacy 包获取已移除的传统 API:

  1. 安装 redux-legacy:
npm install redux-legacy
# 或
yarn add redux-legacy
  1. 修改 src/ducks/store.js 的导入路径:
import { createStore, combineReducers, applyMiddleware } from 'redux-legacy';
import thunk from 'redux-thunk';

const rootReducer = combineReducers({
  // 你的 reducer 列表
});

export default createStore(rootReducer, applyMiddleware(thunk));
额外步骤:清除 Expo 缓存

即使重新安装依赖,Expo Go 可能仍缓存旧代码。执行以下命令清除缓存并重启项目:

npx expo start -c

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 06:53:14