我在整个网络上都看到过这个问题,但没有什么能给我一个有效的解释。
我正在使用 Material-UI Select 和来自 React 的好 ol' setState(...)(虽然不是钩子(Hook))
我的组件基本上由这些行组成:
class MyComponent extends Component {
exportOptions = ['CSV','SDF']
constructor(props) {
super(props);
this.state = {
[...]
formatToExportTo : this.exportOptions[0]
};
[...]
<Select value={this.state.formatToExportTo}
style={{width : "10em"}}
onChange={event=> {
this.setState({formatToExportTo : event.target.value})
}}>{
this.exportOptions.map(f=><MenuItem key={f} value={f}>{f}</MenuItem>)
}</Select>,
我的问题是我的 Select 组件在选择另一个选项后没有更新它的值。
到目前为止我已经尝试过:
setState({...this.state, formatToExport : event.target.value})
在 Select 的onChange=
和 Select 标签中:value = {this.state.formatToExport}
setState({...this.state, formatToExport : event.target.value})
在每个选项的onClick=
和 Select 标签中:值 = {this.state.formatToExport}
。但那只是为了看到更新,因为 event.target.value 无论如何都不对- 我上面写的行的当前版本还有 onClick 或 onChange(没有应该由 setState 单独完成的状态克隆)。
就像在官方示例中一样,所以我真的看不出缺少更新的原因。无论我尝试什么,Select 组件当前显示的值都不会改变,即使状态已正确更新
感谢您花时间阅读我的文章!
最佳答案
总共搜索了 3 小时后:
通常 value={this.state.formatToExportTo}
应该可以工作(我单独尝试过,没有其他应用围绕它)
但是因为我用我的 this
和更新顺序做了一些古怪的事情,我只需要替换:
value={this.state.formatToExportTo}
通过 defaultValue={this.state.formatToExportTo}
就是这样!我希望它能帮助那些会遇到这个问题的人
关于javascript - Material-UI Select 在 onChange 后不更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66780331/