当前位置:首页 > 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控制:

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

react 如何触发表单的校验

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

相关文章

react native如何启动

react native如何启动

React Native 启动步骤 确保已安装 Node.js(建议版本 14 或更高)和 npm/yarn。安装完成后,通过命令行工具执行以下操作。 初始化新项目 使用 React Native…

vue快速实现表单

vue快速实现表单

Vue 快速实现表单 使用 v-model 实现双向绑定 在 Vue 中,可以通过 v-model 指令快速实现表单元素的双向数据绑定。例如,输入框、复选框、单选按钮和下拉菜单都可以通过 v-mode…

vue新增表单实现

vue新增表单实现

Vue 表单实现方法 使用 Vue 实现新增表单功能可以通过多种方式完成,以下是一些常见的方法和步骤: 使用 v-model 双向绑定 在 Vue 中,v-model 指令可以实现表单输入和应用状态…

如何评价react native

如何评价react native

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

电脑如何安装react

电脑如何安装react

安装 Node.js 和 npm React 依赖于 Node.js 和 npm(Node Package Manager)。从 Node.js 官网下载并安装最新稳定版本,安装完成后会自动包含 np…

vue 实现表单

vue 实现表单

Vue 表单实现方法 使用 Vue 实现表单可以通过多种方式,包括基础表单绑定、表单验证以及第三方库集成。以下是常见的实现方法: 基础表单绑定 Vue 提供了 v-model 指令实现表单元素的双向…