在React.js中,表单验证可以通过多种方式实现。以下是一些常见的方法:
import React, { useState } from 'react';
function Form() {
const [values, setValues] = useState({
username: '',
password: '',
});
const [errors, setErrors] = useState({});
const handleChange = (e) => {
setValues({ ...values, [e.target.name]: e.target.value });
};
const validate = () => {
let tempErrors = {};
if (!values.username) {
tempErrors.username = 'Username is required';
}
if (!values.password) {
tempErrors.password = 'Password is required';
}
setErrors(tempErrors);
return Object.keys(tempErrors).length === 0;
};
const handleSubmit = (e) => {
e.preventDefault();
if (validate()) {
console.log(values);
}
};
return (
<form onSubmit={handleSubmit}>
<input
type="text"
name="username"
value={values.username}
onChange={handleChange}
/>
{errors.username && <p>{errors.username}</p>}
<input
type="password"
name="password"
value={values.password}
onChange={handleChange}
/>
{errors.password && <p>{errors.password}</p>}
<button type="submit">Submit</button>
</form>
);
}
export default Form;
使用Formik的例子:
import React from 'react';
import { Formik, Form, Field, ErrorMessage } from 'formik';
import * as Yup from 'yup';
const validationSchema = Yup.object({
username: Yup.string().required('Username is required'),
password: Yup.string().required('Password is required'),
});
function MyForm() {
return (
<Formik
initialValues={{ username: '', password: '' }}
validationSchema={validationSchema}
onSubmit={(values, actions) => {
console.log(values);
actions.setSubmitting(false);
}}
>
{({ isSubmitting }) => (
<Form>
<Field type="text" name="username" />
<ErrorMessage name="username" component="div" />
<Field type="password" name="password" />
<ErrorMessage name="password" component="div" />
<button type="submit" disabled={isSubmitting}>
Submit
</button>
</Form>
)}
</Formik>
);
}
export default MyForm;
这些方法可以根据你的需求和偏好进行选择。在实际应用中,你可能还需要考虑异步验证、自定义验证规则等高级功能。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。