来自material-ui的<select>组件未更新更改

时间:2018-04-10 10:04:26

标签: reactjs material-ui

下拉列表看起来和工作正常,但不会更新新的选择,我收到以下错误消息: 警告:在&lt; select&gt;上使用`defaultValue`或`value`道具而不是在&lt; option&gt;上设置`selected`。 未在&lt; option&gt;上设置已选择据我所知,所以它必须由material-ui的组件设置。无论如何,如果我将值更改为defaultValue,我会收到以下错误消息: aterial-UI:当`select`组件使用`native = false`(默认)时,需要`value`属性。 我认为这是Material-ui本身的一个问题,但是他们的例子工作得很好,尽管像我这样的例子中没有父/子组件。 例: https://codesandbox.io/s/7yk922om7x 我的代码(为简洁起见缩短): 构造函数(道具){         超(道具)         this.state = {             languageValues:{                 htmlFor:'lstLanguages',                 价值:'英语',                 输入:&lt;输入名称=“语言”id =“lstLanguages”/&gt;,                 选项:[                     {value:'dutch',text:'Nederlands'},                     {value:'french',text:'Français'},                     {value:'english',text:'English'},                     {value:'german',text:'Deutsch'}],                 helperText:'选择你的语言',             }         }     }     handleChange = event =&gt; {         event.preventDefault();         this.setState({[event.target.name]:event.target.value});     }     render(){         回来(             &LT; DIV&GT;                 &lt; h2 id =“speechTitle”&gt;语音设置&lt; / h2&gt;                 &LT; HR /&GT;                 &lt; FormGroup column ='true'&gt;                     &LT;下拉                         dataToFill = {this.state.languageValues}                         onChange = {this.handleChange.bind(this)}                     /&GT; Dropdown.js: const DropDown =({dataToFill})=&gt; {     const menuItemValueList = dataToFill.options.map((item,i)=&gt; {         返回&lt; MenuItem值= {item.value} key = {i}&gt; {item.text}&lt; / MenuItem&gt; //始终提供密钥     })     回来(         &lt; FormGroup column ='true'&gt;         &LT; FormControl&GT;             &lt; InputLabel htmlFor = {dataToFill.htmlFor}&gt;语言&lt; / InputLabel&gt;             &LT;选择                 defaultValue = {dataToFill.value}                 input = {dataToFill.input}             &GT;                 {menuItemValueList}             &LT; /选择和GT;             &lt; FormHelperText&gt; {dataToFill.helperText}&lt; / FormHelperText&gt;         &LT; / FormControl&GT;         &LT; / FormGroup&GT;     ); } 编辑1 我想我已经找到了问题:handleChange函数需要[event.target.name]但是需要更改的值嵌套在状态中,我不知道如何访问它... 事件处理程序代码 handleChange = event =&gt; {         this.setState({[event.target.name]:event.target.value})     } 嵌套状态对象: languageValues:{             htmlFor:'lstLanguages',             价值:'英语',             输入:&lt;输入名称=“语言”id =“lstLanguages”/&gt;,             选项:[                 {value:'dutch',text:'Nederlands'},                 {value:'french',text:'Français'},                 {value:'english',text:'english'},                 {value:'german',text:'German'}             ]             helperText:'选择你的语言',         },

0 个答案:

没有答案