React+Redux遇到Store does not have a valid reducer报错如何解决
错误原因及修复方案
你当前的问题一共有2处核心错误,按顺序修改即可解决报错:
1. combineReducers 传参格式不符合要求
combineReducers 必须接收键值对结构的对象作为参数,键为状态树对应的模块名,值为对应的reducer函数。你当前直接将cardReducer函数作为参数传入,不符合API要求,是触发本次报错的直接原因。
根reducer修改后代码:
import { combineReducers } from "redux"; import cardReducer from "../Services/profileimages/reducer"; export default combineReducers({ card: cardReducer });
2. 业务reducer参数声明错误
你当前的业务reducer把state和action两个独立入参错误包裹在了对象中做解构,导致state初始值不生效、action无法正常接收。
业务reducer修改后代码:
import initialState from "./initialState"; import * as types from "./actionTypes"; // 移除参数外层的大括号,改为两个独立入参 const cardReducer = (state = initialState, action) => { switch (action.type) { case types.FIREBASE_GETTING_IMAGES: return { // 建议补充展开原有state,避免覆盖state中的其他字段 ...state, cards: action.cards, }; default: return state; } }; export default cardReducer;
可选优化
你的store文件中定义了中间件数组但未实际使用,需要logger功能可调整createStore调用逻辑:
const store = createStore(rootReducer, applyMiddleware(...middlewares));
内容的提问来源于stack exchange,提问作者Vinay Kumar
相关产品推荐
相关产品推荐

