javascript - Material-UI Select 在 onChange 后不更新

标签 javascript reactjs material-ui state

我在整个网络上都看到过这个问题,但没有什么能给我一个有效的解释。

我正在使用 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/

相关文章:

reactjs - 如何将 MUI 主题对象的自定义属性与情感样式组件中的自定义 Prop 一起使用?

reactjs - material-ui 自动完成接受自定义值

javascript - D3 线性缩放 - 颜色代码不匹配

css - 为什么 Ant 设计子菜单标题具有蓝色?

javascript - setTimeout 测试未按预期运行

javascript - ReactJS framer_motion__WEBPACK_IMPORTED_MODULE_5__.motion.custom 不是函数

javascript - 如何将用户输入从一个js文件传递到另一个

javascript - 如何从祖先覆盖嵌套 Material UI 组件的样式?

javascript - 在 Angular 加载后加载 Jade 并解析所有变量

javascript - 删除元素时滚动行为 : smooth, 不工作