react-hook-form自定义验证问题:API请求后hasErrors未实时更新
API请求后输入验证状态无法实时更新问题排查与解决
问题现象
完成API请求后执行输入验证操作时,验证函数内的hasErrors状态值无法实时同步更新,仅在组件触发重新渲染后才能获取到最新的状态值。
尝试过的无效处理方式
- 用
useCallback包裹验证函数,试图固定函数引用并获取最新状态 - 通过额外设置状态的方式强制触发组件重渲染
对比验证
使用formik搭配swr实现相同的输入验证逻辑时,状态更新正常,不存在实时性问题。
解决方案
核心是让验证逻辑能够直接访问最新的状态,避免闭包捕获旧值的问题:
- 调整验证函数的依赖方式,不再依赖闭包中的旧状态,而是直接从状态管理的源获取最新值
- 优化验证触发时机,确保API请求完成后立即执行验证,且验证逻辑能感知到状态的实时变化
内容的提问来源于stack exchange,提问作者FDisk
相关产品推荐
相关产品推荐

