是的:将字段本身与另一个字段进行比较

2024-01-08

I had

StartIntensity: yup.number(),
EndIntensity: yup
    .number()
    .when(
        "StartIntensity",
        (StartIntensity: number, schema: any) => {
            return !!StartIntensity
                ? schema.moreThan(
                        StartIntensity,
                        "Max should be > min"
                  )
                : schema;
        }
    ),

但我需要类似的东西

StartIntensity: yup.number(),
EndIntensity: yup
    .number()
    .when(
        "StartIntensity, EndIntensity",
        (StartIntensity: number, EndIntensity: number, schema: any) => {
            return !!StartIntensity && StartIntensity !== EndIntensity
                ? schema.moreThan(
                        StartIntensity,
                        "Max should be > min"
                  )
                : schema;
        }
    ),

但上面的代码不能正常工作。是否有可能通过其他方式来执行此验证?


在你的情况下第一个参数.when()应该是一个键数组:

StartIntensity: yup.number(),
EndIntensity: yup
    .number()
    .when(
        ["StartIntensity", "EndIntensity"],
        (StartIntensity: number, EndIntensity: number, schema: any) => {
            return !!StartIntensity && StartIntensity !== EndIntensity
                ? schema.moreThan(
                        StartIntensity,
                        "Max should be > min"
                  )
                : schema;
        }
    ),

键:字符串 |大批

https://github.com/jquense/yup#mixedwhenkeys-string--arraystring-builder-object--value-schema-schema-schema https://github.com/jquense/yup#mixedwhenkeys-string--arraystring-builder-object--value-schema-schema-schema

如果上面的代码抛出“循环依赖”错误(我认为它会),请尝试以下代码:

StartIntensity: yup.number(),
EndIntensity: yup
    .number()
    .when('StartIntensity', (StartIntensity, schema) => {
      return schema.test({
        test: EndIntensity => !!StartIntensity && EndIntensity > StartIntensity,
        message: "Max should be > min"
      })
    }),

或者您也可以使用ref:

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

是的:将字段本身与另一个字段进行比较 的相关文章

随机推荐

  • 如何使用 appium 来自动化 Android 上的浏览​​器?

    我想使用appium在android手机上自动化浏览器 但我不知道如何设置该功能 首先 我在 Android 设备的开发者选项中启用了 USB 调试 其次 adb 运行良好 我可以看到设备 ID 第三 我从Appium for window
  • 当鼠标一段时间没有移动时,用jQuery隐藏div元素?

    我有一个广播视频网站 带有一个菜单 当鼠标一段时间 假设 10 秒 不移动时 应该隐藏该菜单 同样 随着鼠标移动 它应该会重新出现 使用 css 和 jQuery 执行此操作的最佳方法是什么 先感谢您 看看mousemove http ap
  • 隐藏直方图

    所以我想绘制正态分布 我已经看到一种方法是使用以下代码 import numpy as np import matplotlib pyplot as plt mu 5 sigma 1 s np random normal mu sigma
  • 如何创建 C 工厂函数?

    我有一个带有函数指针的结构 如下所示 typedef int node transition func wint t typedef struct lex dfa arc t node transition func func int ex
  • C中的按位移位[重复]

    这个问题在这里已经有答案了 我得到了一些令我困惑的 C 代码 int a 1 int b 32 printf d n d n a lt
  • 在Python中强制函数参数类型?

    我在 Python 类中有一个函数 可以将接口添加到列表中 def RegisterAsListener self inListener self TransitListeners append inListener 这很好 因为一个类只需
  • 在类函数中定义类函数:Python

    我有一个代码 我想在类函数中定义一个类函数 这是我想做的一个简单的例子 该程序的目标是打印 4 gt gt gt class bluh def haha self print 3 def init self def haha self pr
  • Xrm.Page.data 为空

    我在机会实体上添加了一个自定义表单 并附加了一些 javascript 我使用 window open 和 url 中的 formId 来调用表单来打开表单 并且仅用于创建机会实体 在 javascript 中 我只是尝试填充一些字段 但
  • 使用 PHP 和 HTML 时的最佳实践是什么?

    我设计网站已经有一段时间了 但在使用 PHP 和 HTML 时 有一点我一直不太确定 整个文档用 PHP 编写是不是更好 echoHTML 像这样 或者有一个像这样的 HTML 文件 然后添加到 PHP 中 div Content div
  • 人们使用类加载做什么?

    因此 每本 Java 教科书都会谈论 Java 的灵活性 因为它可以在运行时加载类 只需拼凑一根绳子并将其交给Class forName 并抓住ClassNotFoundException并处理它 理论就讲这么多 您能否举例说明如何使用 J
  • 在鼠标悬停时动态添加和删除类 - Vue.js

    我可以使用 Vue 成功地在鼠标悬停时添加一个类 但我想在鼠标离开元素时删除该类 在 Vue 中处理这个问题的惯用方法是什么
  • MongoDB $或查询

    我在 mongo shell 中运行以下查询 db Profiles find or name gary name rob 它只是按预期返回任何内容 JSON Use in 对于问题中的查询 使用更合适 in http docs mongo
  • Websocket 跨页面 JavaScript

    我用 JS 实现了一个基本的 websockets 客户端 function connectToNotifServer var conn new WebSocket ws localhost 8080 conn onopen functio
  • 管道、dup2 和 exec()

    我必须编写一个可以运行管道的外壳 例如像这样的命令ls l wc l 我已经成功解析了用户给出的命令 如下所示 ls 第一个cmd l frsarg wc scmd l secarg 现在我必须使用两个叉子 因为命令是两个和一个管道 我编写
  • XML 中真正允许的字符

    由于在解析某些 据说是 XML 数据时出现一些解析器错误 我查看了XML标准 http www w3 org TR REC xml d 找出真正允许的内容 我目前的疑虑是关于标签内容中允许包含哪些内容
  • 添加更多代码后,Google Apps 脚本会随机生成错误消息“发生意外错误”

    我编写了一个 Google Apps Script UiApp 应用程序 其中包含近 1000 行代码以及相当数量的处理程序和回调 该应用程序运行良好 但随着代码的增长 应用程序突然收到很多 发生意外错误 消息 错误消息在应用程序加载时出现
  • 您如何根据风格选择元素?

    使用 jQuery 您如何找到具有特定样式的元素 例如 float left 无论它是内联样式还是 CSS 文件中定义的样式 使用过滤功能 http docs jquery com Traversing filter filter func
  • 带有嵌套资源轨的嵌套表单 4

    我正在尝试在 Rails 4 0 3 上创建一个带有嵌套资源的嵌套 form for 但是我遇到了一些问题并且花了很多时间 问题是当我尝试提交表单时 这些值没有保存在我的数据库中 它将直接重定向到labs index 我已经定义了嵌套资源和
  • 为什么带宽以每秒位数来衡量?

    根据带宽的定义 它是频率的宽度 光谱 因此带宽应以 Hz 为单位进行测量 但 bps Mbps kbps 几乎到处都被用作带宽的度量 我需要知道的是 为什么使用 bps kbps 等数据传输速率测量来测量信号的带宽 由于对香农 哈特利定律的
  • 是的:将字段本身与另一个字段进行比较

    I had StartIntensity yup number EndIntensity yup number when StartIntensity StartIntensity number schema any gt return S