I'm using formik with yup to treat my forms and i need to validate two objects that is setted by formik in initial values:
initialValues: {
company: { company_name: '', cnpj: '', fantasy_name: '', state_registration: '' },
user: { email: '', password: '' }
},
validationSchema: schema,
So this is my validation yup schema:
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')
})
How i can put one more level (user/company)? I tried something like:
company.company_name: Yup.string().required('Informe o nome da filial!')
But i receive:
Parsing error: Unexpected token, expected ","
How i can do this?
I also tried:
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')
})
})
But i receive:
TypeError: Cannot read property 'company_name' of undefined
My template component:
<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"
/>