📅  最后修改于: 2023-12-03 14:46:56.257000             🧑  作者: Mango
React Form Hook是一个基于React Hooks的表单状态管理工具,它使表单的数据管理和验证变得更加简单。
使用npm来安装React Form Hook。
npm install react-hook-form
useForm
函数import { useForm } from 'react-hook-form';
useForm()
函数const App = () => {
const { register, handleSubmit, errors } = useForm(); // 初始化form状态
const onSubmit = (data) => console.log(data); // 提交表单
return (
<form onSubmit={handleSubmit(onSubmit)}>
<input type="text" name="name" ref={register} />
{errors.name && <span>必须填写</span>}
<input type="email" name="email" ref={register({ required: true, pattern: /^\S+@\S+$/i })} />
{errors.email && <span>输入无效</span>}
<input type="submit" />
</form>
);
}
register
函数<input type="text" name="username" ref={register} />
使用 register
函数设置组件与form数据的绑定,当组件状态改变时,表单中的数据也会更新。
React Form Hook提供了几种简单的表单验证方式:
required
- 必填项<input type="text" name="firstName" ref={register({ required: true })} />
pattern
- 正则表达式验证<input type="text" name="email" ref={register({ pattern: /^\S+@\S+$/i })} />
min/max
- 最小/大值验证<input type="text" name="age" ref={register({ min: 18, max: 99 })} />
validate
- 自定义验证方法const validateUsername = async (value) => {
const result = await /* some api to check if username is already taken */;
return !result; // 如果已存在,则返回false
};
<input type="text" name="username" ref={register({ validate: validateUsername })} />
在使用useForm()
函数初始化表单状态之后,当表单组件中的数据满足条件之后,就可以通过调用handleSubmit()
函数来提交表单数据了。
const onSubmit = (data) => console.log(data); // 提交表单
<form onSubmit={handleSubmit(onSubmit)}>
<input type="text" name="name" ref={register} />
<input type="submit" />
</form>
React Form Hook就是这样一个简单却功能强大的表单管理工具,它可以大大减少React表单开发的烦恼,让开发变得更加高效和愉快。