Yup 模式中的可选字段验证

2023-11-25

我在用着react-hook-form with yup用于我的表单验证并希望某些字段是可选的(空)。

按照他们的文档,我正在使用nullable() and optional()但它仍在得到验证:

export const updateAddressSchema = yup.object({
  address: yup
    .string()
    .nullable()
    .optional()
    .min(5, "Address must be more than 5 characters long")
    .max(255, "Address must be less than 255 characters long"),
  city: yup
    .string()
    .nullable()
    .optional()
    .max(32, "City name must be less than 32 characters long"),
  postal_code: yup
    .string()
    .nullable()
    .optional()
    .length(10, "Postal code must be 10 characters long"),
  phone: yup
    .string()
    .nullable()
    .optional()
    .min(10, "Phone number must be more than 10 characters long")
    .max(20, "Phone number must be less than 20 characters long"),
});

有什么正确的方法可以做到这一点吗?


你需要使用.when用于像下面这样的条件验证。我只添加了address and city只是,您可以像这样添加其他内容。

export const updateAddressSchema = yup.object().shape({

  address: yup.string().when("address", (val, schema) => {
       if(val?.length > 0) {  //if address exist then apply min max else not
          return yup.string().min(5, "min 5").max(255, "max 255").required("Required");
       } else { 
          return yup.string().notRequired();
       }
  }),

  city: yup.string().when("city", (val, schema) => {
       if(val?.length > 0) {
          return yup.string().max(32, "max 32").required("Required");
       }
       else { 
          return yup.string().notRequired();
       }
  }),
  
 }, [
     ["address", "address"], 
     ["city", "city"], 
    ]                   //cyclic dependency
 );

另外,您还需要添加循环依赖

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Yup 模式中的可选字段验证 的相关文章

  • 在 Chrome 中为

    我已经看到这个问题多次出现 但没有任何明确的解决方案 我正在加载一个简单的视频
  • Chrome 开发工具命中代码但未命中断点

    我在 chrome 开发工具上启用了断点 并且在一行上有一个断点 我知道 chrome 正在运行 因为我将断点放在具有以下语句的行上 alert why is this not breaking 如果我在本地主机中找到该文件 则断点有效 断
  • 如何在 jQuery 中将标题转换为 URL slug?

    我正在 CodeIgniter 中开发一个应用程序 我试图在表单上创建一个字段来动态生成URL slug 我想做的是删除标点符号 将其转换为小写 然后用连字符替换空格 例如 Shane s Rib Shack 将变成 shanes rib
  • 仅在 Chrome 上我收到此错误:Uncaught TypeError: Illegal constructor [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 当我在 Chrome 上加载 jQuery 时 我会收到此错误 Uncaught TypeError Illegal constr
  • fadeOut() 和slideUp() 同时进行?

    我已经发现jQuery 淡出然后滑动 https stackoverflow com questions 734554 jquery fadeout then slideup这很好 但不是那个 我怎么能够fadeOut and slideU
  • 自调用函数未定义

    如果我声明一个函数文字 var x function alert hi console log x returns the function code However var x function alert hi console log
  • 如何包装内在组件,保留大部分 Props?

    我想用我自己的 React 功能组件包装一个标准按钮 但我希望新组件的用户能够设置 几乎所有底层按钮的道具 当然 我想保持正确的打字 所以如果 WrappedButton 包含一个button then
  • 非法使用break语句; javascript

    当这个变量达到一定数量时 我希望循环停止 但我不断收到错误 未捕获的语法错误 非法的中断语句 function loop if isPlaying jet1 draw drawAllEnemies requestAnimFrame loop
  • 如何根据另一个下拉列表中的选择动态填充下拉列表中的选项?

    我有一个表 其中包含类别信息 例如产品 我已将它们列在下拉菜单中 现在 我需要做的是 在下一个下拉菜单中列出所选类别的子类别 我希望 javascript 是必需的 但我对 javascript 还不太熟悉 将非常感谢您的帮助 你应该使用
  • JSONP 使用 JQuery 从 HTTPS 协议获取 JSON

    我正在尝试获取从 https 安全站点发送的 JSON 客户端希望不要使用任何服务器端语言 全部都是 Javascript 我读到 当使用 Jquery 中的 ajax 函数时 我必须使用 JSONP 才能从安全站点加载 JSON 我的第一
  • 中有样式表 吗?

    在内部链接 CSS 文件是一个坏主意吗 body 我读过 如果浏览器在外部找到另一个 CSS 文件 则它会被迫重新开始 CSS 渲染 head 只是因为它可能需要将样式应用于已经渲染的元素 另外 我认为 HTML 无法正确验证 我需要确认这
  • 如何在新窗口中打开图像或pdf文件?

    我有一个 gridview 它包含文件名和文件路径 图像和 pdf 格式文件 其中我使用了模板字段 在该字段下放置了 1 个图像按钮 单击该图像按钮 即 查看 按钮 时 我想在新窗口中打开所选文件 这是我的代码 protected void
  • jQuery 中什么函数相当于 .SelectMany()?

    让我解释一下 我们知道 jQuery 中的映射函数充当 Select 如 LINQ 中 tr map function return this children first returns 20 tds 现在的问题是我们如何在 jQuery
  • 使 Bootstrap Popover 在悬停而不是单击时出现/消失

    我正在使用 Bootstrap 构建一个网站Popover http twitter github com bootstrap javascript html popovers我不知道如何使弹出窗口出现在悬停而不是单击时 我想做的就是当有人
  • 在 Nodejs 中,如何停止 FOR 循环直到 MongoDB 调用返回

    我正在研究下面的代码片段 我有一个名为 stuObjList 的 JSON 对象数组 我想循环遍历数组以查找具有特定标志集的特定 JSON 对象 然后进行数据库调用以检索更多数据 当然 FOR 循环不会等待数据库调用返回并到达 j leng
  • 选择单选按钮时隐藏/显示 3 个文本框

    我有 2 个单选按钮 选择一个文本框时 我想显示 3 个文本框 并在选择其他文本框时隐藏它 这是代码 这是我的 2 个单选按钮
  • 如何对多行文本中的每一行应用填充?

    我已将背景颜色应用于 span 标签 也有左和右padding设置在它上面 问题是 padding仅适用于左侧 开始 和右侧 结束 span 而不是当文本换行时每行的左侧 开始 和右侧 结束 我该如何应用左和右padding to the
  • 使用 ng-if 改变角度方向

    我想通过单击将方向从 rtl 更改为 ltr and in 设置 html
  • 减小 TinyMCE 文本区域中的行间距

    I am using TinyMCE to provide a rich text editing text editor But the line spacing between the lines is too much I have
  • Chrome 调试器注入 javascript

    我有这样的好奇心 是否可以以某种方式在我的页面中注入 javascript 并执行它并调试它 正如您在控制台中所做的那样 但在控制台中您无法暂停并观察变量 是否可以调试我通过控制台输入的代码 为什么无法调试通过 XHR 接收的代码 Than

随机推荐

  • 如何在 iOS 上重置沙盒应用内购买以进行测试?

    我做了一个沙盒 iTunes 用户 购买了一个项目 这有效 但我的显示该项目的代码中存在一些问题 所以我想重新买来测试一下 问题是 我无法清除我的购买 我注销了我的沙盒用户 删除了应用程序并重新安装了它 更改了 iTunes 用户几次 该项
  • 如何使用 Eigen 3 表达“ = <= ”?

    我正在移植一些MATLAB代码到C 使用Eigen 3模板库 我正在寻找这个常见的良好映射MATLAB idiom K gt gt 1 2 3 4 5 lt 3 ans 1 1 1 0 0 因此 比较数组和标量 返回具有相同形状的布尔值数组
  • 用于检查多个值的 jQuery 'if' 条件

    在下面的代码中 是否有更好的方法使用 jQuery 检查条件 if test1 val first value test2 val second value test3 val third value test4 val fourth va
  • “条件调用”在 amd64 上的性能

    当考虑代码关键部分中的条件函数调用时 我发现 gcc 和 clang 都会围绕该调用进行分支 例如 对于以下 诚然微不足道的 代码 int32 t attribute noinline negate int32 t num return n
  • 将 SpriteKit 视图集成到 xib 视图中

    我有一个已经使用 xib 文件创建的视图 现在我想向此视图添加一些小元素 这些元素将使用 SpriteKit 中的一些物理动画 所以现在我需要一个 SKView 是否可以添加 SKView 作为与我的 xib 视图相对应的视图的子视图 我尝
  • Fortran 2018+ 中过时的 DO 循环

    我正在使用可能是在最新版本的 gfortran 之前编写的源代码 我知道 DO END DO 和 CONTINUE 的方式已更改 因此不能共享循环终止 有一个方便的链接here 问题是 我不知道该页面上的解释到底告诉我要做什么 如果我在新脚
  • Tomcat 7 tomcat-users manager-script /deploy 示例

    我正在尝试让管理器 部署在新安装的 Tomcat 7 0 34 上工作 但是当我尝试通过执行 PUT 进行部署时 我不断收到 403http localhost 8080 manager deploy 我还没有在 Tomcat 7 中使用它
  • Angular - POST 上传的文件

    我在用着Angular 打字稿将文件与 JSON 数据一起发送到服务器 下面是我的代码 import Component View NgFor FORM DIRECTIVES FormBuilder ControlGroup from an
  • Python:在“exec”环境中奇怪的“NameError:名称...未定义”

    我有信心至少对 Python 的作用域系统有一些基本的了解 现在我收到一个错误 不幸的是到目前为止我什至无法编写一个好的代码片段来进行复制 我尝试在一个新的小项目中重现它 但一切都按我的预期进行 我只能描述我所做的事情 希望有人能发现一种模
  • 是否可以在运行时将参数传递给 python 生成的 exe?

    我正在尝试文件 I O 我有一个小型练习程序 运行时会创建一个文本文件 我用 pyinstaller 打包它 这样双击 exe 就会创建一个新文件夹 并在其中放置一个带有 hello world 的文本文件 十分简单 然后我开始想知道mai
  • 如何使用 Boost Asio 减少编译时间

    Boost Asio 是一个很棒的库 但它有一个巨大的缺点 编译时间极慢 一个HTTP协议的简单实现 真的很简单 大约1k行代码 在GCC 4 4下编译需要大约13 5s 我尝试使用 PCH 但它并没有太多地改善编译时间 大约仅 1 秒 那
  • azure api-apps、logic-apps、web-apps 和 azure function 之间的区别

    azure API 应用程序 逻辑应用程序 Web 应用程序和 azure 函数之间有什么区别 这对开发者来说有什么不同 逻辑应用程序 逻辑应用提供了一种在云中简化和实施可扩展集成和工作流程的方法 它提供了一个可视化设计器 可以将流程建模并
  • 将选项传递给 ES6 模块导入

    是否可以将选项传递给 ES6 导入 这句话怎么翻译 var x require module someoptions to ES6 没有办法用一个单一的方法来做到这一点import声明 它不允许调用 所以你不会直接调用它 但你基本上可以做与
  • 在 Postgres 中聚合多个字段时填充缺失的行

    我每天使用 Postgres 汇总一组产品的销售额 不仅需要知道何时发生销售 还需要知道何时不发生销售以进行进一步处理 SELECT sd date COUNT sd sale id AS sales sd product FROM sal
  • 在 OpenCV 中写入 AVI 文件

    网上有示例 Learn OpenCv O reilly 中给出了代码 经过多次尝试后 out avi 文件写入了 0 字节 我想知道我哪里出错了 以下是我使用的代码 int main int argc char argv CvCapture
  • 在 XML 中找不到未封闭的元素

    我有一个很大的 XML 文件 18MB 显然其中有一个标签未关闭 我知道这一点是因为当我运行 W3C 标记验证工具 validator w3 org 时 出现以下错误 You may have neglected to close an e
  • 透明 ARGB 十六进制值

    中的颜色this表全部不透明 我猜的价值A被设定为FF 透明度的代码是什么 例如这个颜色FFF0F8FF AliceBlue 为透明代码如 F0F8FF 以下是 到十六进制值的表格 Example 对于 85 的白色 您可以使用 D9FFF
  • 如何使用 jquery 同位素按日期排序(新)

    请原谅我 因为我对 JS 有点新手 只知道足够的操作 对于那些熟悉同位素的人来说 http isotope metafizzy co docs sorting html 我在页面顶部有一个按日期排序的按钮 同位素找到元素 span clas
  • Javascript 非阻塞脚本,为什么不简单地将所有脚本放在 标记之前?

    为了避免 javascript 阻塞网页渲染 我们是否可以将所有 JS 文件 代码放在关闭之前加载 执行 tag 所有的 JS 文件和代码只有在整个页面渲染完成后才会下载并执行 所以需要像这篇文章中建议的技巧吗 非阻塞技术加载JS文件 他基
  • Yup 模式中的可选字段验证

    我在用着react hook form with yup用于我的表单验证并希望某些字段是可选的 空 按照他们的文档 我正在使用nullable and optional 但它仍在得到验证 export const updateAddress