React hook 表单字段数组验证不起作用
P粉665679053
P粉665679053 2023-12-06 19:41:46
[React讨论组]

我有一个字段数组,其中有一个输入字段,我为其设置了一些验证规则,例如 requiredminLength

我希望在附加新字段时立即验证该字段。但是,这种情况并没有发生,即使我附加空字段,这些输入字段的错误仍然未定义:

function App() {
  const useFormMethods = useForm({
    defaultValues: {
      test: [{ firstName: "Bill", lastName: "Luo" }]
    },
    mode: "onChange"
  });
  const { fields, append, remove } = useFieldArray({
    control: useFormMethods.control,
    name: "test",
    rules: {
      minLength: 4
    }
  });

  const onSubmit = (data) => console.log("data", data);

  return (
    
      

Field Array

Render Count: {renderCount}
    {fields.map((item, index) => { return (
  • ); })}
); }

这是需要验证的受控输入:

export const FormControlledInput = ({ name }) => {
  const {
    control,
    formState: { errors }
  } = useFormContext();

  const { field, fieldState } = useController({
    name,
    control,
    rules: { required: true }
  });

  console.log(`fieldState error: `, fieldState.error);
  console.log(`formState errors: `, errors);

  return ;
};

您可以在此处查看工作代码和框示例。 我需要做什么才能使其在每次更改时得到验证?

P粉665679053
P粉665679053

全部回复(1)
P粉404539732

用于将字段添加到数组的 append 方法是异步的,执行验证的 trigger 方法也是异步的,因此存在竞争条件,导致在向数组注册字段之前触发验证形式。在添加数组字段时触发重新验证之前,您可以只 await 该函数结果。

我分叉了你的 CSB 这里。我还添加了一个 useEffect 挂钩,该挂钩将在安装组件时触发验证。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号