微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用没有任何值的 Select 组件时发出警告

如何解决使用没有任何值的 Select 组件时发出警告

我在代码中使用了 <InputLabel>SelectMenuItem 组件,如下所示:

<div className="form-field full-width-field ">
                   
                    <InputLabel>Q3.Is this the correct data?</InputLabel>
                        <Select
                        labelId="demo-simple-select-label"
                        id="demo-simple-select"
                        value={''}
                       onChange={handleChange}
                        >
                        <MenuItem value={'Y'}>Yes</MenuItem>
                        <MenuItem value={'N'}>No</MenuItem>
                        
                        </Select>
                    </div>

因此,当我在 value = {''} 中使用如上所示的 Select 时,我没有看到代码中有任何错误。但是,当用户选择YesNo时,屏幕上什么也没有显示,如下图:

enter image description here

但是,当我注释掉 value = {''} 部分并像这样使用它时:

                     <Select
                        labelId="demo-simple-select-label"
                        id="demo-simple-select"
                        //value={''}
                       onChange={handleChange}
                        >

它在屏幕上显示用户选择 YesNo,但我在控制台中不断收到以下警告:红色:

警告:组件正在更改不受控制的类型输入 undefined 被控制。输入元素不应从 不受控制到受控制(反之亦然)。决定使用 在整个生命周期内受控或不受控制的输入元素 组件。

我该如何解决这两个问题?

解决方法

让您的组件受到控制。

const [answer,setAnswer] = useState('');

function handleChange(event) {
    setAnswer(event.target.value);
}

<div className="form-field full-width-field ">
    <InputLabel>Q3.Is this the correct data?</InputLabel>
    <Select labelId="demo-simple-select-label"
            id="demo-simple-select"
            value={answer}
            onChange={handleChange}>
        <MenuItem value={'Y'}>Yes</MenuItem>
        <MenuItem value={'N'}>No</MenuItem>                        
    </Select>
</div>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。