关于select:React中select设置defaultValue不生效

问题

这样一种写法下,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>
    )
}

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理