0

我在代码中使用了<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时,屏幕上不会显示任何内容,如下所示:

在此处输入图像描述

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

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

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

警告:组件正在更改类型为 undefined 的不受控输入以进行控制。输入元素不应从不受控切换到受控(反之亦然)。决定在组件的生命周期内使用受控输入元素还是不受控输入元素。

如何解决这两个问题?

4

1 回答 1

0

使您的组件受控。

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>
于 2021-05-15T02:06:51.353 回答