ver*_*thS 13 reactjs yup formik
我正在使用 formik 和 yup 来处理我的表单,我需要验证 formik 在初始值中设置的两个对象:
\n\ninitialValues: {\n company: { company_name: \'\', cnpj: \'\', fantasy_name: \'\', state_registration: \'\' },\n user: { email: \'\', password: \'\' }\n},\nvalidationSchema: schema,\nRun Code Online (Sandbox Code Playgroud)\n\n这是我的验证模式:
\n\n const schema = Yup.object().shape({\n company_name: Yup.string().required(\'Informe o nome da filial!\'),\n cnpj: Yup.string().required(\'Informe o cnpj!\'),\n email: Yup.string().email(\'Email n\xc3\xa3o possui formato v\xc3\xa1lido\').required(\'Informe o e-mail\'),\n password: Yup.string().required(\'Informe a senha\')\n })\nRun Code Online (Sandbox Code Playgroud)\n\n我如何才能再增加一个级别(用户/公司)?\n我尝试了类似的操作:
\n\ncompany.company_name: Yup.string().required(\'Informe o nome da filial!\')\nRun Code Online (Sandbox Code Playgroud)\n\n但我收到:
\n\n\n\n\n解析错误:意外的标记,预期为“,”
\n
我怎样才能做到这一点?
\n\n我也尝试过:
\n\n const schema = Yup.object().shape({\n company: Yup.object().shape({\n company_name: Yup.string().required(\'Informe o nome da filial!\'),\n cnpj: Yup.string().required(\'Informe o cnpj!\'),\n }),\n user: Yup.object().shape({\n email: Yup.string().email(\'Email n\xc3\xa3o possui formato v\xc3\xa1lido\').required(\'Informe o e-mail\'),\n password: Yup.string().required(\'Informe a senha\')\n })\n })\nRun Code Online (Sandbox Code Playgroud)\n\n但我收到:
\n\n\n\n\n类型错误:无法读取未定义的属性“company_name”
\n
我的模板组件:
\n\n<TextField\n value={formik.values.company.company_name}\n onChange={formik.handleChange}\n onBlur={formik.handleBlur} \n helperText={formik.touched.company.company_name ? formik.errors.company.company_name : ""}\n error={formik.touched.company && Boolean(formik.errors.company)}\n variant="outlined"\n margin="normal"\n required\n fullWidth\n id="company_name"\n label="Raz\xc3\xa3o social"\n name="company_name"\n />\nRun Code Online (Sandbox Code Playgroud)\n
lar*_*arz 13
我认为你可以继续像这样嵌套它 -
const schema = Yup.object().shape({
company: Yup.object().shape({
company_name: Yup.string.required(),
// etc
}),
user: Yup.object().shape({
email: Yup.string.required(),
password: Yup.string.required(),
}),
});
Run Code Online (Sandbox Code Playgroud)
您收到该错误是因为company.company_name不是有效的密钥。如果您确实想做类似的事情,则必须使用计算密钥:
['company.company_name']: 'Company Name'
| 归档时间: |
|
| 查看次数: |
21838 次 |
| 最近记录: |