Expo SDK52项目升级Redux后出现combineReducers未定义错误求助
问题原因
Redux 5.x 对核心包做了重大变更:combineReducers、applyMiddleware、createStore 这些传统 API 已从 redux 核心包中移除,转而推荐使用 Redux Toolkit 作为官方标准开发方案。你的代码仍在从 redux 导入这些已不存在的函数,因此抛出 undefined 错误。
解决方案
方案一:迁移到 Redux Toolkit(推荐)
Redux Toolkit 是官方主推的 Redux 开发方式,内置了 thunk 中间件、状态切片管理等功能,代码更简洁且维护性更强。
- 安装 Redux Toolkit(若尚未安装):
npm install @reduxjs/toolkit # 或 yarn add @reduxjs/toolkit
- 修改
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:
- 安装
redux-legacy:
npm install redux-legacy # 或 yarn add redux-legacy
- 修改
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
相关产品推荐
相关产品推荐

