#reactjs #validation #conditional-statements #formik #yup
#reactjs #проверка #условные операторы #formik #да
Вопрос:
Я хочу просто сказать, что если type = 1 затем проверяет объект членства, попробовал его.когда () но должен был сделать это с каждым объектом (только когда type =1 затем проверяет
validationSchema={Yup.object().shape({
//General
name: Yup.string().min(3).required('Name is required.'),
email: Yup.string().email().required('Email is required.'),
contactNo: Yup.number().required('Number is required.'),
address: Yup.string().required('Address is required.'),
country: Yup.string().required('Country is required.'),
memberShip: Yup.object()
.shape({
//Something like this
if(type ===1){
memberShipNo: Yup.string().required('MemberShip Number is required.'),
memberShipStart: Yup.string().required( 'MemberShip Number is required.'),
fee: Yup.string().required('MemberShip Number is required.')},
}),
verified: Yup.bool(),
})}
Комментарии:
1. Не совсем понятно по вашему вопросу, но вы сказали
type=1
, но я не вижуtype
поля в вашей схеме. Я думаю, вы хотите условную проверку на основе выбора определенного другого поля, пожалуйста, уточните2. Привет, внес некоторые изменения, надеюсь, это поможет
3. проверка типа — это реквизит, который я получаю
4. итак
type
, является ли реквизит, на основе которого вам требуетсяmembership
объект, в противном случае необязательным?5. Да, поэтому, если type = 2 или что-то в этом роде, не проверяйте объект
Ответ №1:
Один из способов решить вашу проблему с отображением условного поля — использовать троичный и расширяющийся. Это решение требует небольшого количества повторяющегося кода, и могут быть другие (лучшие) способы, хотя вам решать продолжать расследование, если вы хотите лучшего решения.
В этом примере, если type === 1
тогда все поля required
еще не обязательны, но необязательны.
memberShip: Yup.object()
.shape({
...(type === 1 ? {
memberShipNo: Yup.string().required('MemberShip Number is required.'),
memberShipStart: Yup.string().required('MemberShip Number is required.'),
fee: Yup.string().required('MemberShip Number is required.')
} : {
memberShipNo: Yup.string(),
memberShipStart: Yup.string(),
fee: Yup.string()
}),
}),
Комментарии:
1. Я продолжаю получать ошибки Ошибка синтаксического анализа: неожиданный токен, ожидаемый «,»
2. @ChrisJnrPotgieter исправил это