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
相关产品推荐
相关产品推荐

