📅  最后修改于: 2023-12-03 14:49:39.858000             🧑  作者: Mango
在 ReactJS 应用程序中,我们通常需要对表单进行验证,以确保用户输入数据的有效性和正确性。使用 Formik 和 Yup 库可以让表单验证变得更加容易和简单。
Formik 是一个功能强大且灵活的 React 表单库,它提供了许多实用的功能,包括:
Formik 可以帮助我们处理表单状态,处理表单的验证,生成表单的 HTML,处理表单的提交等。因此,使用 Formik 可以大大简化我们的工作。
安装 Formik 很简单,可以使用 npm 或 yarn 安装:
npm install formik
# 或者
yarn add formik
使用 Formik 非常简单,只需编写以下代码:
import React from "react";
import { Formik, Form, Field } from "formik";
const MyForm = () => (
<Formik
initialValues={{ name: "", email: "", password: "" }}
onSubmit={(values) => {
console.log(values);
}}
>
<Form>
<div>
<label htmlFor="name">Name</label>
<Field id="name" name="name" placeholder="Your name" />
</div>
<div>
<label htmlFor="email">Email</label>
<Field id="email" name="email" placeholder="you@example.com" />
</div>
<div>
<label htmlFor="password">Password</label>
<Field
id="password"
name="password"
type="password"
placeholder="Choose a password"
/>
</div>
<button type="submit">Submit</button>
</Form>
</Formik>
);
export default MyForm;
上面的代码将生成一个包含三个输入字段和一个提交按钮的表单。每个字段都有一个 id
和一个 name
属性,可以用于验证表单数据。
Formik 还提供了许多其他功能,如:
有关 Formik 的更多信息,请参阅官方文档。
Yup 是一个功能强大的 JavaScript 对象 schema 验证库,它可以帮助我们定义和验证 数据模式。
Yup 是 Formik 的默认验证库,但也可以与其他表单库一起使用。
您可以使用 npm 或 yarn 安装:
npm install yup
# 或者
yarn add yup
Yup 使用 schema 对象来定义数据模式并验证输入,下面是一个示例:
import * as Yup from "yup";
const schema = Yup.object().shape({
name: Yup.string().required("Name is required"),
email: Yup.string().email("Invalid email").required("Email is required"),
password: Yup.string().required("Password is required"),
});
const data = { name: "John", email: "john@example.com", password: "password" };
schema.validate(data).then((validData) => {
console.log(validData);
});
上面的代码将定义一个由三个字符串字段组成的数据模式,并使用 validate
方法验证输入的数据是否符合要求。如果验证成功,将返回一个 Promise,该 Promise 解析为验证后的数据。
Yup 还提供了许多其他功能,如:
有关 Yup 的更多信息,请参阅官方文档。
现在,我们已经了解了 Formik 和 Yup,我们可以将它们一起使用来验证 ReactJS 表单。
下面是一个使用 Formik 和 Yup 的示例:
import React from "react";
import * as Yup from "yup";
import { Formik, Form, Field, ErrorMessage } from "formik";
const schema = Yup.object().shape({
name: Yup.string().required("Name is required"),
email: Yup.string().email("Invalid email").required("Email is required"),
password: Yup.string().required("Password is required"),
});
const MyForm = () => (
<Formik
initialValues={{ name: "", email: "", password: "" }}
validationSchema={schema}
onSubmit={(values) => {
console.log(values);
}}
>
{({ isSubmitting }) => (
<Form>
<div>
<label htmlFor="name">Name</label>
<Field id="name" name="name" placeholder="Your name" />
<ErrorMessage name="name" component="div" />
</div>
<div>
<label htmlFor="email">Email</label>
<Field id="email" name="email" placeholder="you@example.com" />
<ErrorMessage name="email" component="div" />
</div>
<div>
<label htmlFor="password">Password</label>
<Field
id="password"
name="password"
type="password"
placeholder="Choose a password"
/>
<ErrorMessage name="password" component="div" />
</div>
<button type="submit" disabled={isSubmitting}>
Submit
</button>
</Form>
)}
</Formik>
);
export default MyForm;
上面的代码将生成一个包含三个输入字段和一个提交按钮的表单,每个字段都使用 Yup 进行验证。如果错误发生,将显示相应的错误消息。
使用 Formik 和 Yup 可以让 ReactJS 表单验证变得更加容易和简单。这样不仅可以提高我们的开发效率,还可以提高应用程序的质量和可靠性。建议开发人员在需要时将其用于表单验证。