问题描述
我在这里的目标是拥有一个非必需的oneOf,其中两个选项都有一个设置的名称。我的代码看起来像这样:
{
"title": "A registration form","description": "A simple form example.","type": "object","deFinitions": {
"first_def": {
"type": "object","properties": {
"name": {
"type": "string","default": "first","readOnly": true
},"params": {
"type": "string"
}
},"required": [
"name","params"
],"additionalProperties": false
},"second_def": {
"type": "object","default": "second","size": {
"type": "string","enum": [
"1","2","3"
]
},"params": {
"type": "string","default": ""
}
},"size"
],"additionalProperties": false
}
},"properties": {
"first_or_second": {
"oneOf": [
{
"$ref": "#/deFinitions/first_def","title": "first"
},{
"$ref": "#/deFinitions/second_def","title": "second"
}
]
}
}
}
我希望用户能够选择第一个(name
值将变为只读的“ first”)或第二个(name
值将变为只读的) -仅“第二”)。
如果将此代码粘贴到rjsf playground中,则会发现存在两个问题。
- 如果您从
first
切换到second
,它将设置名称,但是一旦您切换回来,它将不会更新该名称。因此,一旦将其设置为second
,无论如何它将保持second
。如果选择它,它还将存储second
(大小)中无关的参数,然后切换到first
。 - 此
first_or_second
属性不是必需的,但它仍将使用first
(但没有必需的名称)呈现选择。
我的问题是,如何启用默认值以使其达到预期效果?当我将选择的选项从name
更改回second
时,为什么first
值没有更新?当我切换到不具有该字段的选项时,如何从size
中删除多余的formData
值?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)