Warning: Use the `defaultValue` or `value` props on

需求

  • 写了一个Select的函数组件,代码如下
        function Select({values, callback, disabled=false, readOnly=false,selected}){
            return (
                <select
                    disabled={disabled}
                    readOnly={readOnly}
                    onChange={({target:{value}}) => callback(value)}
                >
                    {values.map(([value,text],index) => (
                        <option selected={selected === value} value={value} key={index}>
                                {text}
                        </option>
                    ))}
                </select>
            )
        }

报错

react-dom.development.js:500 Warning: Use the `defaultValue` or `value` props on <select> instead of setting `selected` on <option>.
    in option (created by Select)
    in select (created by Select)
    in Select

分析

  • 警告信息,已经告知很明显,使用在原生的select节点上标示 valuedefaultValue,就可以指定 options项指定传入进来的默认值,来替代之前常用的在 option上判断 selected 的做法
  • 换而言之,在React语境下,不需要将在option上判断val,在select上指定 defaultValue即可

bug fix

      function Select({values, callback, disabled=false, readOnly=false,selected}){
            return (
                <select
                    disabled={disabled}
                    readOnly={readOnly}
                    onChange={({target:{value}}) => callback(value)}
                    defaultValue={selected}
                >
                    {values.map(([value,text],index) => (
                        <option  value={value} key={index}>
                                {text}
                        </option>
                    ))}
                </select>
            )
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值