使用MaterialUI和ReactJS提交和验证表单可以分为以下几个步骤:
@material-ui/core
, @material-ui/icons
, react-hook-form
和 yup
这些依赖。可以使用以下命令安装:npm install @material-ui/core @material-ui/icons react-hook-form yup
import React from 'react';
import { useForm } from 'react-hook-form';
import { yupResolver } from '@hookform/resolvers/yup';
import * as yup from 'yup';
import { TextField, Button, Grid } from '@material-ui/core';
const schema = yup.object().shape({
name: yup.string().required('姓名不能为空'),
email: yup.string().email('请输入正确的邮箱地址').required('邮箱不能为空'),
password: yup.string().min(6, '密码至少需要6位').required('密码不能为空'),
});
useForm
和yupResolver
创建一个表单实例:function MyForm() {
const { register, handleSubmit, formState: { errors } } = useForm({
resolver: yupResolver(schema),
});
const onSubmit = (data) => {
console.log(data);
};
// ...后续代码
}
register
方法将表单元素与验证规则关联起来: return (
<form onSubmit={handleSubmit(onSubmit)}>
<Grid container spacing={2}>
<Grid item xs={12} sm={6}>
<TextField
label="姓名"
variant="outlined"
inputRef={register}
name="name"
error={!!errors.name}
helperText={errors.name ? errors.name.message : ''}
fullWidth
/>
</Grid>
<Grid item xs={12} sm={6}>
<TextField
label="邮箱"
variant="outlined"
inputRef={register}
name="email"
error={!!errors.email}
helperText={errors.email ? errors.email.message : ''}
fullWidth
/>
</Grid>
<Grid item xs={12}>
<TextField
label="密码"
type="password"
variant="outlined"
inputRef={register}
name="password"
error={!!errors.password}
helperText={errors.password ? errors.password.message : ''}
fullWidth
/>
</Grid>
<Grid item xs={12}>
<Button type="submit" variant="contained" color="primary">
提交
</Button>
</Grid>
</Grid>
</form>
);
import '@material-ui/core/styles';
现在,你就应该可以在项目中看到一个具有验证功能的表单了。用户提交表单时,表单验证将被触发,如果存在错误,将会显示相应的错误信息。
领取专属 10元无门槛券
手把手带您无忧上云