【问题标题】:Warning while using Select component without any value使用没有任何值的选择组件时发出警告
【发布时间】:2021-05-15 01:24:44
【问题描述】:

我在代码中使用了<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>

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

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

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

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

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

如何解决这两个问题?

【问题讨论】:

标签: reactjs controlled-component


【解决方案1】:

让您的组件受控。

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>

【讨论】:

  • 谢谢。我会试试这个。快速提问 - 我有几个类似于我在帖子中显示的下拉列表。你会建议我为其他两个下拉菜单再定义两个userState('') 吗?例如 - const [answer1, setAnswer1] = useState(''); & const [answer2, setAnswer2] = useState(''); ?
  • @Tan 是的,如果您有某种形式,我建议您为每个字段定义状态。这是一种受控输入在 React 中的工作方式
猜你喜欢
  • 1970-01-01
  • 2018-01-13
  • 2021-09-08
  • 1970-01-01
  • 1970-01-01
  • 2016-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多