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

React JSON Schema中如何根据下拉框选中值动态设置字段必填性

解决方案

报错的核心原因是oneOf校验规则要求数据必须精准匹配数组中的唯一一项schema,原有写法在部分场景下会出现匹配逻辑冲突,进而抛出多余错误。推荐用JSON Schema标准的if/then/else条件语法实现需求,完全规避该问题。

调整后的完整schema代码

const schema = {
  "type": "object",
  "properties": {
    "myGroup": {
      "type": "object",
      "title": "My Group",
      "properties": {
        "country": {
          "type": "string",
          "title": "Country",
          "enum": ["", "RO", "PT", "JP", "VN"],
          "enumName": ["", "Romania", "Portugal", "Japan", "Vietnam"]
        },
        "code": {
          "type": "string",
          "title": "Input Code"
        }
      },
      "required": ["country"],
      "dependencies": {
        "country": {
          "if": {
            "properties": {
              "country": { "enum": ["PT", "VN"] }
            }
          },
          "then": {
            "required": ["code"]
          }
        }
      }
     }
   }
 };

改动说明

  • 替换原有oneOf分支逻辑为if/then/else条件判断,不存在匹配多规则或者无规则匹配的问题,不会抛出多余校验错误
  • 逻辑和需求完全对齐:当选中国家为PT/VN时,触发then分支规则,要求code字段必填;其余国家默认无必填限制
  • 兼容所有支持draft-07及以上版本的JSON Schema校验器,也是官方推荐的条件必填实现方式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 13:27:02