我正在尝试根据用户选择的选择选项有条件地验证对象,问题是我正在渲染货币列表,并且在尝试将其设为必填字段时遇到巨大困难,因为我必须传入一个空的对象开始。
我的代码堆栈是 React、Formik 和 Yup(所有最新版本)。
对象模式
category: 'A',
details: {
name: '',
price: 0,
stock: 0,
currency: {
label: '',
code: '',
symbol: '',
alpha_2: '',
}
}
是的模式
category: Yup.string().required('You must pick a category'),
details: Yup.object().when('category', {
is: 'A',
then: Yup.object({
label: Yup.string().required(`Select the currency you're retailing in`),
code: Yup.string().required(`Select the currency you're retailing in`),
symbol: Yup.string().required(`Select the currency you're retailing in`),
alpha_2: Yup.string().required(`Select the currency you're retailing in`),
}),
})
使用上面的代码,表单通过了验证,并且货币对象有一个空值列表''
,这是一个不希望的结果。
如何进行模式触发器验证?