我有自定义的radio
按钮和select
,只有几个options
。默认情况下,选择框中仅显示某些选项。当我单击任何radio
按钮时,select
选项将更改为其他一些选项。当我取消选中radio
按钮时,它们将变回默认的select
选项。到目前为止,一切都很好。但是,如果选择了选项,然后再次选中radio
按钮,则它会像通常一样更改select
选项,但不会显示第一个选项或默认值(即第一个选项)。它将显示第二个或第三个取决于之前选择的哪个。它没有跳回到“动作”
{!this.state.isAnySelected ?
<>
<select defaultValue="Actions">
<option>Actions</option>
<option>Category request</option>
<option>Add new review</option>
</select>
</>
:
<>
<select defaultValue="Actions">
<option>Actions</option>
<option>Add new product</option>
<option>View product</option>
</select>
</>
}
每次尝试单击单选按钮时,我都试图更改defaultValue,但是它什么也没做。
答案 0 :(得分:2)
答案 1 :(得分:1)
一种解决方法是在两个选择元素中添加key
:
{!this.state.isAnySelected ?
<>
<select key="categorySelect" defaultValue="Actions">
<option>Actions</option>
<option>Category request</option>
<option>Add new review</option>
</select>
</>
:
<>
<select key="productSelect" defaultValue="Actions">
<option>Actions</option>
<option>Add new product</option>
<option>View product</option>
</select>
</>
}
这样做的结果是,每当select
发生变化时,都要重新安装this.state.isAnySelected
。
当前this.state.isAnySelected
更改时,React只会更新现有选项的选项文本,因此当前选择的索引不受影响。 “ defaultValue”只会影响首次安装该元素时选择的内容。这两个不同的键使React将它们视为单独的DOM元素,而不是对现有DOM元素的更改,因此,每当this.state.isAnySelected
发生更改时,前一个select
都会被卸载,而另一个this.state.questionTags.map((tag) => {
return (
<div>
{tag}
</div>
)
})
则具有正确的默认值。