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

React中useReducer dispatch值未正确更新,contacts始终为undefined求助

问题解决方案

你遇到的问题是低级拼写错误导致的,具体修复步骤如下:

  • 第一步:修正dispatch传递的action参数拼写
    你在setContacts方法中给action定义的参数名为payoad,但reducer中读取的是action.payload,字段名不匹配导致无法获取到正确的联系人列表,修改setContacts方法中的dispatch代码即可:
const setContacts = (contactList) => {
    console.log(contactList);
    dispatch({
        type: SET_CONTACT_LIST,
        payload: contactList // 此处原来拼写为payoad,修正为正确的payload
    })
}
  • 第二步(可选优化):给reducer添加default分支
    当前你的reducer没有处理未匹配的action类型,遇到未定义的action时会返回undefined,导致整个state被清空。建议补充default分支返回原有state:
const chatReducer = (state, action) => {
    console.log(action);
    console.log(state);
    switch(action.type) {
        case TOGGLE_CHAT:
            return {
                ...state,
                isChatPage: action.payload
            }
        case SET_LOGGED_USER:
            return {
                ...state,
                loggedInUser: action.payload
            }
        case SET_CONTACT_LIST:
            return {
                ...state,
                contacts: action.payload
            }
        // 补充default分支
        default:
            return state
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 16:09:04