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

函数组件中如何向Redux传递状态与action?react-hook-form触发action无响应问题

问题1:未调用绑定dispatch的setLog方法

你通过connect第二个参数传入的setLog是已经自动绑定了dispatch的版本,只有调用这个props传入的方法才会触发store状态更新。你当前的组件没有从props中取这个方法,直接调用了导入的原始action生成函数,只会返回action对象,不会实际dispatch到store,所以没有效果也不会报错。
修复方式:修改组件参数声明,从props取出setLog:

// 原来的写法:function SignUp({ info }) {
// 修改为:
function SignUp({ info, setLog }) {

问题2:Reducer处理逻辑错误

react-hook-form提交的表单data是对象格式{login: '输入的账号', password: '输入的密码'},你当前在reducer中直接展开对象到数组里,会得到不符合预期的结果。
如果需求是把每次提交的表单作为独立条目存入数组,修改reducer逻辑:

case 'SET_LOG':
  return [...state, action.payload]; // 去掉action.payload前的扩展运算符

如果需求是存储最新的单条登录信息,把state初始值改为对象:

export default(state={},action) => {
switch(action.type){
    case 'SET_LOG':
        return {...state, ...action.payload};
    default:
        return state;
}
}

Redux Saga相关说明

你虽然配置了saga中间件,只要没有写监听SET_LOG类型的saga拦截逻辑,saga不会影响普通action的正常reducer处理,本次问题和saga配置无关。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 01:15:05