首页 > 解决方案 > YUP 验证 - 如何获取值

问题描述

我得到以下代码:

    name: yup
      .string()
      .trim()
      .required(message("nameMissing"))
      .max(40, message("nameTooLongWithStatus", {
        length: (HERE I NEED HELP),
      })),

请参阅我写“这里我需要帮助”的那一行。我希望它是这样的: name.toString().length

但这显然行不通,实际上我尝试过的都没有用。我只是想得到'name'的值并得到它的长度,仅此而已。

所以想法是,“name”应该是一个最多包含 40 个字符的字符串。如果超过 40 个,将显示一条消息“最大字符数为 40(当前长度)”,其中当前长度是您作为输入提供的名称。

message("nameTooLongWithStatus"将接受参数“长度”并将构造所述消息。

标签: javascriptreactjsvalidationyup

解决方案


如果您提供一个函数作为max().

path,value,originalValue,label,max

name: Yup.string()
.trim()
.max(5, (obj) => {
  const valueLength = obj.value.length;
  return `Name (length: ${valueLength}) cannot be more than ${obj.max}`;
})
.required('Required')

推荐阅读