在 React.js 中处理表单验证有多种方法,下面介绍两种常用的方法:
import React, { useState } from 'react';
function Form() {
const [values, setValues] = useState({
username: '',
email: '',
});
const [errors, setErrors] = useState({});
const validate = () => {
let tempErrors = {};
if (!values.username) {
tempErrors.username = '用户名不能为空';
}
if (!values.email) {
tempErrors.email = '邮箱不能为空';
} else if (!/\S+@\S+\.\S+/.test(values.email)) {
tempErrors.email = '邮箱格式不正确';
}
setErrors(tempErrors);
};
const handleChange = (e) => {
const { name, value } = e.target;
setValues({ ...values, [name]: value });
};
const handleSubmit = (e) => {
e.preventDefault();
validate();
if (Object.keys(errors).length === 0) {
console.log('表单提交成功:', values);
} else {
console.log('表单验证失败:', errors);
}
};
return (
<form onSubmit={handleSubmit}>
<div>
<label>用户名:</label>
<input
type="text"
name="username"
value={values.username}
onChange={handleChange}
/>
{errors.username && <p style={{ color: 'red' }}>{errors.username}</p>}
</div>
<div>
<label>邮箱:</label>
<input
type="email"
name="email"
value={values.email}
onChange={handleChange}
/>
{errors.email && <p style={{ color: 'red' }}>{errors.email}</p>}
</div>
<button type="submit">提交</button>
</form>
);
}
export default Form;
import React from 'react';
import { Formik, Form, Field, ErrorMessage } from 'formik';
const validate = (values) => {
let errors = {};
if (!values.username) {
errors.username = '用户名不能为空';
}
if (!values.email) {
errors.email = '邮箱不能为空';
} else if (!/\S+@\S+\.\S+/.test(values.email)) {
errors.email = '邮箱格式不正确';
}
return errors;
};
function FormWithFormik() {
return (
<Formik
initialValues={{ username: '', email: '' }}
validate={validate}
onSubmit={(values, actions) => {
console.log('表单提交成功:', values);
actions.setSubmitting(false);
}}
>
{({ isSubmitting }) => (
<Form>
<div>
<label>用户名:</label>
<Field name="username" />
<ErrorMessage name="username" component="p" style={{ color: 'red' }} />
</div>
<div>
<label>邮箱:</label>
<Field name="email" type="email" />
<ErrorMessage name="email" component="p" style={{ color: 'red' }} />
</div>
<button type="submit" disabled={isSubmitting}>
提交
</button>
</Form>
)}
</Formik>
);
}
export default FormWithFormik;
这些方法可以帮助您在 React.js 中处理表单验证。您可以根据项目需求选择合适的方法。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。