You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Yup标签数组验证优化:支持非必填、小写校验与数量限制

解决方案

要实现非必填要求(允许null、undefined或空数组),你需要调整两段逻辑:一是让Yup允许字段为null/undefined,二是在自定义测试函数里跳过对空值/空数组的校验。

修改后的完整验证代码如下:

tags: yup.array()
  .nullable() // 允许字段为null
  .optional() // 允许字段为undefined
  .max(14, "Max 14 tags allowed!")
  .test("is-tag", "All words must be lower case!", (arr) => {
    // 如果是null/undefined/空数组,直接通过校验
    if (!arr || arr.length === 0) return true;
    // 遍历检查每个标签是否为小写
    for (let i = 0; i < arr.length; i++) {
      if (arr[i] !== arr[i].toLowerCase()) {
        return false;
      }
    }
    return true; 
  }),

关键改动说明:

  • 添加.nullable():允许字段取值为null
  • 添加.optional():允许字段取值为undefined(即表单中完全不提交该字段)
  • 自定义测试函数开头增加判断:当arr是null、undefined或空数组时,直接返回true通过校验,避免后续循环报错

内容的提问来源于stack exchange,提问作者Ilmi Jerliu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 09:34:56