我让TextField工作,现在如果没有进行选择,Material UI Select将变为红色,但在进行选择后保持红色,并且不允许表单提交。我使用Yup作为验证库。也许我一直使用错误的Yup类型,我尝试了String和array,但我无法使其工作。
import {
makeStyles,
Box,
Select,
FormControl,
InputLabel,
MenuItem,
Typography,
} from "@material-ui/core";
import * as yup from 'yup';
import { yupResolver } from '@hookform/resolvers'
import { useForm, Controller } from "react-hook-form";
const FormFields = ({ typeOfInquiry, typeOfProviderSupplier, feedbackform }) => {
const schema = yup.object().shape({
typeofInquiry: yup.array().nullable().required(),
});
const { handleSubmit, control, reset, errors } = useForm();
return (
<Controller
style={{ minWidth: 220 }}
name="typeofInquiry"
render ={({ field: { ...field }, fieldState })=>{
console.log(props)
return ( <Select {...field} >
{typeOfInquiry.map((person) => (
<MenuItem key={person.value} value={person.value} >
{person.label}
</MenuItem>
))}
</Select>
)
}}
control={control}
defaultValue=" "
/>
<Typography className={classes.red}>{errors.typeofInquiry?.message}</Typography>
</FormControl>
</form>
);
}
您必须将ref
传递给TextField
组件。
下面是一个工作示例
https://codesandbox.io/s/exciting-pateu-3n0i9
您应该对Select
执行类似的操作
MUI的一些示例:https://codesandbox.io/s/react-hook-form-v7-controller-5h1q5?file=/src/Mui.js