请在上使用defaultValue或value props,而不要在上设定selected。
<select defaultValue="react">
<option value="react">React</option>
<option value="angular">Angular</option>
</select>
字符串
defaultValue可以与上面的select标记一起使用。但是,它似乎不能与循环生成的选项一起使用。
<select defaultValue={selectedOptionId}>
{option_id.map(id =>
<option key={id} value={id}>{options[id].name}</option>
)}
</select>
型
可能是在声明defaultValue时未完全设置选项?
我可以在componentDidUpdate()
和onChange
事件中进行手动分配。
但我的问题是--有没有更干净(更好)的方法来解决它?
谢谢.
5条答案
按热度按时间zazmityj1#
这是旧的,但由于答案#1与受控
Select
有关,而问题似乎与不受控Select
有关,我认为值得为未来的读者留下一些行:问题是,对于
uncontrolled
组件,React需要在第一次渲染**之前知道options
**是什么,因为从那一刻起,defaultValue
将不会覆盖Select
的当前值。这意味着如果你在options
之前渲染Select
,它将不知道该选择什么。您可以在
options
可用之前避免render
来解决这个问题:字符串
或者如果你不想使用三进制:
型
zbsbpyhn2#
对于遇到此问题的用户,您可以通过使用
value
prop而不是defaultValue
来获得所需的功能,例如:字符串
hvvq6cgz3#
很可能你的
option_id
和options
数组结构或selectedOptionId
变量有问题。你构建选择组件的方式是可以的。我做了一个fiddle,代码运行良好:
字符串
}
ny6fqffe4#
我能找到的最好的解决方案是将
key
属性设置为与defaultValue
相同,因此它将是一个不同的元素。后果不是我研究的,但我相信应该没问题。
cfh9epnr5#
你可以这样做,React会抱怨,因为它使用value而不是selected来保持表单组件more information的一致性。
个字符