Redux初始化报错:mods切片Reducer返回Undefined的问题求助
问题排查与解决:Redux初始化时"mods" reducer返回undefined错误
嘿,作为Redux新手踩这个坑太正常啦!我帮你定位到问题了——你的mods reducer缺少了default分支,这就是触发报错的直接原因。
为什么会报错?
Redux在初始化阶段,会给所有reducer发送一个初始化action(这个action的type不是你定义的GET_MODS)。你的mods reducer里的switch语句只处理了GET_MODS这个case,当遇到不匹配的action时,函数就没有任何返回值,默认返回undefined,而Redux明确要求:如果传入reducer的state是undefined,必须显式返回初始状态;而且初始状态绝对不能是undefined。
修复方案
只需要在mods.js的switch语句里添加一个default分支,返回当前的state(初始化时就是你定义的initialState)就行:
import { GET_MODS } from "../actions/types" const initialState = { mods: [], } export default function(state = initialState, action) { switch(action.type) { case GET_MODS: return { ...state, mods: action.payload } // 新增default分支,确保任何情况下都返回有效状态 default: return state } }
补充说明
你之前没遇到这个问题,可能是因为之前写的reducer都默认加了这个分支,或者场景不同没触发初始化的校验。记住这个Redux reducer的核心规则:无论收到什么action,reducer必须返回一个非undefined的状态值,哪怕只是返回当前state。
内容的提问来源于stack exchange,提问作者Lun
相关产品推荐
相关产品推荐

