问题
这样一种写法下,defaultValue
是不会失效的。
function Test() {const [dv, setDv] = useState(0)
// 在某个元素的点击回调中 setDv()
// foo.onClick = () => {setDv(bar)}
return(
<select
defaultValue={dv}
>
<option value='1' >1</option>
<option value='2' >2</option>
<option value='3' >3</option>
</select>
)
}
解决
给 <select/>
加个动静 key
强制执行渲染。
function Test() {const [dv, setDv] = useState(0)
// 在某个元素的点击回调中 setDv()
// foo.onClick = () => {setDv(bar)}
return(
<select
key={Date.now()}
defaultValue={dv}
>
<option value='1' >1</option>
<option value='2' >2</option>
<option value='3' >3</option>
</select>
)
}