#reactjs #validation #react-hook-form #yup
#реагирует на #утверждение #реакция-крючок-форма #ага
Вопрос:
Я пытаюсь создать условное поле ввода. Но я сталкиваюсь с некоторыми проблемами. Позвольте мне сначала показать вам код, а затем я объясню, в чем дело.
export const addProductSchema = yup.object().shape({ productName: yup.string().required('Product name is required!'), descriotion: yup.string().required('Product description is required!'), parentProductId: yup.number().typeError('Parent Product is required!').required(), vendorId: yup.number().typeError('Vendor is required!').required(), brandId: yup.number().typeError('Brand is required!').required(), attributeId: yup.number().typeError('Physical Attribute is required!').required(), productShadeId: yup.number().typeError('Product Shade is required!').required(), weight: yup.number().typeError('Product weight is required!').required(), productDimension: yup.number().typeError('Product Dimension is required!').required(), productPoints: yup.number().typeError('Product Points is required!').required(), ismarketPlace: yup.boolean(), isPublish: yup.boolean(), isPreOrder: yup.boolean(), delivaryDayPreorder: yup.string().when('isPreOrder', (value, schema) =gt; { if (value === true) { return schema .matches(/^d $/, 'Enter only positive whole number!') .required('Preorder Delivery Time is required!') } return schema.notRequired() }), })
Это моя схема добавления продукта. В схеме вы можете видеть, что у меня есть ключ с именем «isPreOrder». Что является флажком. По умолчанию он не установлен. И если пользователь установит флажок, я хочу показать поле ввода «delivaryDayPreorder». Я дал 2 изображения, чтобы вы могли понять, что я пытаюсь сказать.
Теперь проблема, с которой я сталкиваюсь, немного связана со мной. Если я не поставлю флажок «isPreOrder» , все будет работать нормально. И я получаю объект без ключа «delivaryDayPreorder» при отправке формы.
Скажем так, я случайно поставил флажок «isPreOrder». Но я не хочу, чтобы это было правдой, поэтому я снял флажок. Но теперь при отправке формы я получу ключ «delivaryDayPreorder» со значением пустой строки. Но я не хочу, чтобы в моем объекте был ключ «delivaryDayPreorder». Как я могу решить эту проблему?