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

React Native Redux报错:TypeError: combineReducers不是函数求助

错误原因与解决办法

错误根源

  1. 冗余导入与模块冲突:你在store.js中导入了redux包的combineReducers但未使用,而Redux Toolkit(@reduxjs/toolkit)已经内置该工具函数,单独导入redux包的版本可能与Toolkit内部依赖的版本存在冲突,导致模块解析异常。
  2. 依赖版本不精确:react-redux指定的版本为"8.0",属于模糊版本号,可能安装的版本与redux@4.0.5、@reduxjs/toolkit@1.8.5存在兼容性问题,引发函数未定义的错误。
  3. 项目重命名后的缓存问题:重命名项目后,Expo的缓存可能残留旧的模块映射,导致导入路径或模块识别错误。

解决步骤

1. 清理冗余导入

修改store.js,删除未使用的combineReducers导入(configureStore会自动处理reducer合并):

// store.js
import { configureStore } from "@reduxjs/toolkit";
import taskReducer from './taskSlice'

// 移除这一行:import { combineReducers } from 'redux' 

export default configureStore({
    reducer:{
        tasks:taskReducer
    }
})

2. 修复依赖版本

修改package.json中的react-redux版本为精确兼容的版本(与@reduxjs/toolkit@1.8.5匹配的8.0.2):

"dependencies": {
    // ...其他依赖
    "react-redux": "8.0.2",
    // ...其他依赖
}

执行依赖更新命令:

npm install
# 若使用yarn则执行:yarn install

3. 清理Expo缓存

执行以下命令清除Expo的缓存,确保模块重新正确解析:

expo r -c

额外优化建议

你的taskSlice.js中addTask的name字段错误赋值为action.payload.id,建议修正为:

addTask:(state,action) => {
    const newTask = {
        id:action.payload.id,
        name:action.payload.name, // 改为传入的name值
    };
    state.push(newTask)
},

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 11:48:22