当前位置:首页 > 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属性自动触发表单校验:

react 如何触发表单的校验

<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>
);

校验触发时机配置

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

react 如何触发表单的校验

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

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

useForm({ mode: 'onBlur' });

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

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

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

相关文章

如何优化react

如何优化react

优化 React 性能的方法 使用 React.memo 进行组件记忆 React.memo 是一个高阶组件,用于缓存函数组件的渲染结果,避免不必要的重新渲染。只有当组件的 props 发生变化时,才…

css表单制作

css表单制作

基础表单结构 使用HTML创建表单的基本结构,包含<form>标签及输入字段。表单通常需要action(提交地址)和method(提交方法)属性。 <form action="/s…

css怎么制作表单

css怎么制作表单

基础表单结构 使用HTML创建表单元素,搭配CSS进行样式设计。表单通常包含<form>标签及输入控件(如<input>、<textarea>、<select…

如何评价react native

如何评价react native

React Native 的优势 跨平台开发效率高:基于 JavaScript 和 React 语法,可同时开发 iOS 和 Android 应用,减少重复代码量。性能接近原生:通过原生组件渲染,性能…

react如何取消渲染

react如何取消渲染

取消渲染的方法 在React中,取消渲染通常指的是在某些条件下阻止组件渲染或中断正在进行的渲染过程。以下是几种常见的方法: 条件渲染 通过条件判断决定是否渲染组件或部分内容。可以使用if语句或三元运…

form表单elementui

form表单elementui

Form 表单 ElementUI 使用指南 ElementUI 提供了强大的表单组件,支持数据绑定、验证和自定义样式等功能。以下是使用方法和常见场景的解决方案。 基本表单结构 使用 el-form…