#javascript #reactjs #validation #yup
#javascript #reactjs #проверка #да
Вопрос:
У меня есть два объекта: страна отправки и страна получения. У каждого из этих двух объектов есть другие поля, но я бы хотел проверить только одно из них. Я хотел бы проверить, совпадает ли страна-получатель со страной-получателем, и если это так, верните ошибку. Я попробовал следующую схему, но она не работает. Я что-то пропустил?
const validationSchema = object({
sending_country: object({
name: string().ensure().required().max(100, "Name too long")
}),
receiving_country: object({
name: string().ensure().required().max(100, "Name too long").when(
"$sending_country.name", (sending_country, schema) => {
return schema.test({
test: receiving_country => receiving_country.name !== sending_country.name,
message: "Both countries cannot be identical"
})
})
})
})
Ответ №1:
В итоге я немного смешал решения
const validationSchema = object({
sending_country: object({
name: string().ensure().required().max(100, "Name too long")
}),
receiving_country: object().shape({
name: string().ensure().required().max(100, "Name too long")
}).when(
"sending_country", (sending_country, schema) => {
return schema.test({
test: receiving_country => receiving_country.name !== sending_country.name,
message: "Both countries cannot be identical"
})
})
})