【发布时间】:2016-08-10 19:00:54
【问题描述】:
[edit] 这是由于我自己的困惑,道歉。
在 JSX 中为 <option> 元素设置 selected 属性效果很好,但它会导致 React 抛出警告:
Warning: Use the 'defaultValue' or 'value' props on <select> instead of setting 'selected' on <option>.
在父 <select> 元素上设置 defaultValue 会导致 <select> 的 value 默认为该设置,但不会设置默认选中的 <option>。因此,这会使用户看到的内容与实际选择的内容不同步。
在父 <select> 元素上设置 value 属性迫使我添加一个 onChange 处理程序,将值设置为组件状态,并编写一堆额外的代码来完成简单地设置 selected <option> elements 只用一个词。
有人知道为什么 React 会抛出这个警告吗?我不想编写一堆额外的代码来删除似乎与现实不相符的警告。据我所知,它工作得很好,那我为什么不使用它呢?
【问题讨论】:
-
你说
defaultValue没有“设置默认选择<option>”对我来说似乎是什么意思? -
<select defaultValue={"B"}> <option>{"A"}</option> <option>{"B"}</option> <option>{"C"}</option> </select>在该代码示例中,当组件首次呈现时,选择元素的值是“B”,但用户看到的“默认选择”是 A,因为它会是如果我没有设置 defaultValue 道具。 -
嗯?但事实并非如此.. jsfiddle.net/69z2wepo/39163
-
是的,你是对的,对不起。我恳求暂时的精神错乱。我试图将 defaultValue 匹配到选项的内容而不是选项的值(在我的用例中是不同的)。很抱歉造成混乱。
-
@rodwa4: “我试图将 defaultValue 匹配到选项的内容而不是选项的值(在我的用例中是不同的)” ,这不是
select元素的工作方式。值是 值,而不是文本,它们不同。
标签: javascript html reactjs jsx