Reactjs 根据是否选中其他复选框,对文本字段进行条件验证?

Reactjs 根据是否选中其他复选框,对文本字段进行条件验证?,reactjs,validation,react-hook-form,Reactjs,Validation,React Hook Form,我正在尝试向文本字段添加验证规则,如果选中表单中的单独复选框,则该字段必须是非空字符串才能提交表单 以下是到目前为止我所拥有的链接: 我需要表单(“tiger_type”)中的最终文本输入,以要求仅在选中id为“tiger”的复选框输入时输入值 我对react和react-hooks表单不熟悉,所以任何指点都会很感激。提前感谢。使用react hook form提供的回调函数的验证对象。完全工作溶液 从'react hook form'导入{useForm}; // ... 您的组件实现 常量{

我正在尝试向文本字段添加验证规则,如果选中表单中的单独复选框,则该字段必须是非空字符串才能提交表单

以下是到目前为止我所拥有的链接:

我需要表单(“tiger_type”)中的最终文本输入,以要求仅在选中id为“tiger”的复选框输入时输入值


我对react和react-hooks表单不熟悉,所以任何指点都会很感激。提前感谢。

使用
react hook form
提供的回调函数的验证对象。完全工作溶液

从'react hook form'导入{useForm};
// ... 您的组件实现
常量{getValues,getValues}=useForm();
返回(
{
如果(!value&&getValues('username'))返回“提供用户名时需要”;
返回true;
},
},
})}
name=“电子邮件”
type=“text”
/>
);

注意:在编写此解决方案时,react hook form的v5和v6支持此解决方案

如果您需要条件验证,我建议使用validate函数和getValues API。控制器的解决方案是什么?@thodwris将
验证
对象的内容传递给控制器的
规则
属性
import { useForm } from 'react-hook-form';
// ... your component implementation 
const { getValues, getValues } = useForm(); 

return (
  <form onSubmit={handleSubmit}>
    <input ref={register} name="username" />
    <input
      ref={register({
        validate: {
          required: value => {
            if (!value && getValues('username')) return 'Required when username is provided';
            return true;
          },
        },
      })}
      name="email"
      type="text"
    />
 </form>
);