react select 标签 defaultValue 和 value 踩坑日记

在React项目中,遇到下拉框默认值设置的问题。初版使用defaultValue,导致刷新页面后数据错误,因它仅在挂载时渲染。改用value,虽然数据更新,但页面未同步。最终解决方案是结合value与onChange监听函数,确保value绑定动态数据以实现正确显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在写react项目,需要设置下拉框默认值.
第一版本:使用defaultValue,发现刷新页面,数据错误
分析:defaultValue只在页面挂载时渲染一次,后续数据发生变化,不再重新渲染

<div className="month">
    <select defaultValue="dayjs().get("month")" onChange={(e) => onChange(e)}>
        {months.map(month => <option key={month} value={month} >{month}</option>)}
    </select></div>

第二版:修改为value,点击select,发现数据更新了,但页面不更新;
分析:value需要接收一个动态数据,dayjs().get(“month”)是一个死值。

<div className="month">
    <select value="dayjs().get("month")" onChange={(e) => onChange(e)}>
        {months.map(month => <option key={month} value={month} >{month}</option>)}
    </select></div>

第三版:使用value绑定动态数据,且绑定onChange监听函数

    const onChange = (e: React.ChangeEvent<HTMLSelectElement>) => {
        let date = e.target.value
        if (date.length === 4) {
            setSelectDate({
                year: date,
                month: selectDate.month
            })
        } else {
            setSelectDate({
                year: selectDate.year,
                month: date
            })
        }
    }

<div className="month">
    <select value={selectDate.month} onChange={(e) => onChange(e)}>
        {months.map(month => <option key={month} value={month} >{month}</option>)}
    </select></div>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值