Мне нужно проверить опцию Select и некоторые другие поля, используя Formik и Yup. На самом деле другие поля проверяются, но отреагировать на выбор не удалось. Я попробовал некоторые коды из онлайн, не помогая. Мой код, подобный этому
Мои правила Yup
export const validationRules = Yup.object().shape({
name: Yup.string().required('Customer name required'),
email: Yup.string()
.email('Invalid email')
.required('Customer email required'),
geography: Yup.object().required('Please select Geography'),
});
Мой выбор:
const geography = [
{ code: 'US', label: 'US', id: 1 },
{ code: 'SG', label: 'SG', id: 2 },
{ code: 'AUS', label: 'AUS', id: 3 },
{ code: 'OTHER', label: 'OTHER', id: 4 },
];
исходные данные
const [intialData, setintialData] = useState({
name: '',
email: '',
geography: {},
});
I'mam рендеринг подобен этому
return(
<Formik
initialValues={intialData}
validationSchema={validation rules}
onSubmit={onSaveData}
>
{({ errors, setFieldValue, setFieldTouched, values, handleChange }) => (
<Form noValidate>
<div className="row">
<div className="col">
<label className="col-form-label-sm">Customer Name</label>
<Field type="text" className="form-control" name="name" />
{errors.name ? errors.name : ''}
</div>
<div className="col">
<label className="col-form-label-sm">Customer Email</label>
<Field type="email" className="form-control" name="email" />
{errors.email ? errors.email : ''}
</div>
</div>
<div className="row">
<div className="col">
<label className="col-form-label-sm">Geography</label>
<Select
name="geography"
onBlur={() => setFieldTouched('geography', true)}
onChange={option => setFieldValue('geography', option)}
options={geography}
/>
{errors.geography ? errors.geography : ''}
</div>
</div>
<div className="modal-footer">
<button type="submit" className="btn btn-primary">
Save changes
</button>
</div>
</Form>
)}
</Formik>
)
Поля электронной почты и имени проверяются без реакции-выбора. Так что я утешил свой объект ошибки Yup, в котором отображаются только имя и проверка электронной почты, а не география. География - это изначально пустой объект, заданный в исходных данных. Пожалуйста, помогите мне проверить ответ-выберите