javascript - 基于布尔属性的条件字段验证
问题描述
我希望favoriteAlcohol
仅在props.isAdult
传递给组件时验证/需要该字段是true
.
Yup.object().shape({
favoriteAlcohol: Yup.string().when(props.isAdult, {
is: true,
then: Yup.string().required(),
}),
name: Yup.string().required('Nazwa jest wymagana'),
})
我怎样才能做到这一点?
上面的解决方案不起作用,因为when
将表单的“键”作为第一个参数,并且我通过了 prop.
一个可行的解决方案是映射prop.isAdult
到isAdult
表单值字段,然后我可以'isAdult'
作为第一个参数传递给when()
函数。不过,这不是最好的解决方案。
解决方案
const favoriteAlcohol = props.isAdult ? {favoriteAlcohol: Yup.string().required()} : {}
Yup.object().shape({
...favoriteAlcohol,
name: Yup.string().required('Nazwa jest wymagana'),
})
如果 props.isAdult = true 那么,它将使
Yup.object().shape({
favoriteAlcohol: Yup.string().required(),
name: Yup.string().required('Nazwa jest wymagana'),
})
否则会使
Yup.object().shape({
name: Yup.string().required('Nazwa jest wymagana'),
})
推荐阅读
- c# - 如何使用 c# 在 Exchange 服务器中获取用户对日历的权限
- asp.net - 无法运行我的注册表单 - “一个页面只能在一个服务器端包含一个表单标签”
- nativescript-vue - 为什么 vue-devtools 不显示 Vuex 商店?
- mysql - Mysql Unknown column in where 子句 union all
- git - 在 Google Cloud Builder 中使用 git 命令
- python - 如何在不滚动python的情况下将flout数字作为17,8999变成17,8?
- json - 无法在 ESP8266(NodeMCU)和 PHP 实时服务器之间发送/接收 POST DATA REQUEST
- java - 从 switch case Java 中调用变量
- algorithm - 每日编码问题 316:硬币找零问题 - 确定面额?
- django-views - 在 Django 中上传大文件的文件夹/目录