React Hook Form v6.15.4设置defaultValues后Picker未填充且报字段缺失警告
react-hook-form@6.15.4 Picker字段默认值不生效问题解决方案
以下是针对该版本下独有的问题排查路径和修复方案:
1. 优先排查异步数据初始化时机问题
这是该场景下最高发的原因:
- 若
someArray是异步接口返回、或者依赖其他状态初始化的动态数组,useForm初始化时someArray还未加载完成,此时someArray[0]为undefined。react-hook-form@6.x 会将undefined的默认值判定为字段未配置,触发缺失警告,且后续someArray更新后,useForm不会自动同步更新默认值。 - 其余正常的Picker大概率对应静态默认值,不会受异步时机影响。
修复方案:监听动态数组加载状态,加载完成后调用reset手动更新表单默认值
useEffect(() => { // 确认数组加载完成后再重置表单值 if (someArray?.length) { reset({ BETA_AGONIST: someArray[0], // 其他原有默认值可同步在此处声明保留 }) } }, [someArray, reset])
2. 排查值格式匹配问题
确认三处值的格式完全一致:
betaAgonists选项数组中每一项的取值格式- Picker组件
onChange触发时返回的值格式 - 你设置的
BETA_AGONIST默认值格式
比如其余正常的Picker默认值取的是选项的value属性,而当前字段误传了整个选项对象,就会导致Picker识别不到默认值。
3. 排查reset调用冲突
检查代码中是否存在无参调用reset()的逻辑,该操作会清空你在useForm中配置的所有默认值,若存在需要将BETA_AGONIST的默认值补充到reset的参数中。
4. 基础校验
检查字段名拼写是否完全一致,包括大小写、下划线,避免defaultValues和Controller的name属性不匹配。
内容的提问来源于stack exchange,提问作者Waleed
相关产品推荐
相关产品推荐

