#reactjs #formik #yup
#reactjs #formik #да
Вопрос:
У меня проблема с проверкой. Я хотел, чтобы, если access
значение равно 1, вы могли выбрать start_date
и end_date
, но если значение access
не равно 1, тогда вы можете выбрать только сегодня.
Codesandbox
export const validationSchema = yup.object().shape({
access: yup.number().nullable(),
start_date: yup.string().required('Select start date'),
end_date: yup.string().required('Select end date'),
});
Ответ №1:
Вместо проверки строк вы можете использовать проверку даты, просто убедитесь, что задали правильный обмен сообщениями!:
import moment from "moment";
...
const today = new Date().toDateString();
const validationSchema = yup.object().shape({
access: yup.number().nullable(),
start_date: yup.date()
.typeError("Invalid date")
.required("Select start date")
.when("access", {
is: 1,
otherwise: (d) => d.min(today, "Should be today's date")
.max(today, "Should be today's date")
}),
end_date: yup.date()
.typeError("Invalid date")
.required("Select end date")
.when("access", {
is: 1,
otherwise: (d) => d.min(today, "Should be today's date")
.max(today, "Should be today's date")
})
});
Обновление stackblitz можно найти здесь .
Комментарии:
1. Когда доступ равен 1, вы можете выбрать любую дату. Но когда значение
access
НЕ РАВНО 1, вы можете выбрать только сегодня. и, кстати, пожалуйста, используйте date-fns. Я опубликовал свой codesandbox в своем вопросе. Спасибо