Я использую formik с yup для обработки моих форм, и мне нужно проверить два объекта, которые установлены formik в начальных значениях:
initialValues: {
company: { company_name: '', cnpj: '', fantasy_name: '', state_registration: '' },
user: { email: '', password: '' }
},
validationSchema: schema,
Так что это моя схема проверки yup:
const schema = Yup.object().shape({
company_name: Yup.string().required('Informe o nome da filial!'),
cnpj: Yup.string().required('Informe o cnpj!'),
email: Yup.string().email('Email não possui formato válido').required('Informe o e-mail'),
password: Yup.string().required('Informe a senha')
})
Как я могу поставить еще один уровень (пользователь / компания)? Я пытался что-то вроде:
company.company_name: Yup.string().required('Informe o nome da filial!')
Но я получаю:
Ошибка синтаксического анализа: неожиданный токен, ожидается ","
Как я могу сделать это?
Я также пытался:
const schema = Yup.object().shape({
company: Yup.object().shape({
company_name: Yup.string().required('Informe o nome da filial!'),
cnpj: Yup.string().required('Informe o cnpj!'),
}),
user: Yup.object().shape({
email: Yup.string().email('Email não possui formato válido').required('Informe o e-mail'),
password: Yup.string().required('Informe a senha')
})
})
Но я получаю:
Ошибка типа: не удается прочитать свойство 'company_name' из неопределенного
Мой компонент шаблона:
<TextField
value={formik.values.company.company_name}
onChange={formik.handleChange}
onBlur={formik.handleBlur}
helperText={formik.touched.company.company_name ? formik.errors.company.company_name : ""}
error={formik.touched.company && Boolean(formik.errors.company)}
variant="outlined"
margin="normal"
required
fullWidth
id="company_name"
label="Razão social"
name="company_name"
/>