当前位置:首页 > React

react 如何触发表单的校验

2026-01-25 18:38:49React

触发表单校验的方法

在React中,表单校验通常通过受控组件或第三方库(如Formik、React Hook Form)实现。以下是常见的触发校验方式:

受控组件手动校验

通过状态管理错误信息,在提交或失去焦点时触发校验:

const [email, setEmail] = useState('');
const [error, setError] = useState('');

const handleBlur = () => {
  if (!email.includes('@')) {
    setError('Invalid email');
  } else {
    setError('');
  }
};

return (
  <input 
    value={email}
    onChange={(e) => setEmail(e.target.value)}
    onBlur={handleBlur}
  />
  {error && <div>{error}</div>}
);

使用Formik库

Formik提供validatevalidationSchema属性自动触发表单校验:

<Formik
  initialValues={{ email: '' }}
  validate={values => {
    const errors = {};
    if (!values.email.includes('@')) {
      errors.email = 'Invalid email';
    }
    return errors;
  }}
  onSubmit={values => console.log(values)}
>
  {({ errors }) => (
    <Form>
      <Field name="email" />
      {errors.email && <div>{errors.email}</div>}
      <button type="submit">Submit</button>
    </Form>
  )}
</Formik>

使用React Hook Form

通过register注册校验规则,handleSubmit触发校验:

const { register, handleSubmit, formState: { errors } } = useForm({
  mode: 'onBlur' // 可设置为onChange/onSubmit
});

return (
  <form onSubmit={handleSubmit(data => console.log(data))}>
    <input 
      {...register('email', { 
        required: true,
        pattern: /^\S+@\S+$/i 
      })} 
    />
    {errors.email && <span>Invalid email</span>}
    <button type="submit">Submit</button>
  </form>
);

校验触发时机配置

不同库支持多种触发模式:

  • onBlur: 输入框失去焦点时校验
  • onChange: 值变化时实时校验
  • onSubmit: 提交表单时校验(默认行为)
  • onTouched: 元素被交互后校验

在React Hook Form中可通过mode配置:

useForm({ mode: 'onBlur' });

在Formik中可通过validateOnBlur/validateOnChange控制:

react 如何触发表单的校验

<Formik validateOnBlur={true} validateOnChange={false}>

标签: 表单react
分享给朋友:

相关文章

如何手写一个react

如何手写一个react

手写一个简单的 React 创建一个基础的 React 实现需要理解其核心概念:虚拟 DOM、组件、状态管理和渲染。以下是一个简化版的 React 实现。 创建虚拟 DOM 虚拟 DOM 是真实 D…

react 如何分页

react 如何分页

分页实现方法 在React中实现分页功能可以通过多种方式完成,具体取决于数据来源(如API或本地数据)和UI库的选择。以下是常见的实现方法: 使用本地数据分页 对于存储在组件状态或Context中…

react如何动画

react如何动画

React 动画实现方法 React 中实现动画可以通过多种方式,包括原生 CSS、第三方库或 React 内置的动画解决方案。以下是几种常见方法: 使用 CSS 动画和过渡 通过 CSS 的 tr…

react 如何调试

react 如何调试

调试 React 应用的方法 使用 React Developer Tools 安装 Chrome 或 Firefox 的 React Developer Tools 扩展,可以检查组件树、状态和 p…

react如何重置

react如何重置

重置 React 应用的状态 使用 useState 钩子重新初始化状态变量是最直接的方法。将状态变量重置为初始值或空值即可完成重置。 const [count, setCount] = useSt…

react如何注销

react如何注销

React 组件的注销方法 在 React 中,组件的注销通常指的是在组件卸载时执行清理操作,例如取消订阅、清除定时器或释放资源。以下是几种常见的方法: 使用 useEffect 钩子的清理函数…