【问题标题】:Material-UI SelectField onChange doesnt workMaterial-UI SelectField onChange 不起作用
【发布时间】:2018-06-27 07:12:49
【问题描述】:

我正在努力工作material-uiSelectField 组件。

在我的项目中,常见的select 组件可以正常工作,但如果声明SelectField 组件我有问题。

问题在于调用onChange 方法。

如果我用Select 组件调用它,一切正常,点击时值会改变

测试

写入控制台。

如果我用SelectField 组件调用它。在GUI 中,它只显示来自subsystemsItems 变量的项目,但如果我尝试选择一个,则没有任何反应。

测试

也没有写入控制台。

class App extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      SubsystemID: ''
    };
    this.handleSelectChange6 = this.handleSelectChange6.bind(this);
  }

  handleSelectChange6(event) {

    console.log("test");
    const target = event.target;
    const value = target.type === 'checkbox' ? target.checked : target.value;
    const name = target.name;
    if (value === "Zvolit") {
      this.setState({
        [name]: ''
      });
    }
    else {
      this.setState({
        [name]: value
      });
    }

  }
  render() {
    return (
      <div>
        <SelectField
          value={this.state.SubsystemID}
          onChange={this.handleSelectChange6}>
          {subsystemsItems}
        </SelectField>

        <select value={this.state.SubsystemID} name={"SubsystemID"} onChange={this.handleSelectChange6}>
          <option defaultValue>Zvolit</option>
          {subsystemsItems}
        </select>
      </div>
    )
  }
}

【问题讨论】:

  • 你用的是哪个版本的material-ui
  • "material-ui": "^0.20.1",
  • SelectField 的孩子不能选择,但 MenuItem

标签: javascript reactjs material-ui


【解决方案1】:

尝试使用material-ui提供的&lt;MenuItem&gt;组件

<SelectField
   value={this.state.SubsystemID}
   onChange={this.handleSelectChange6}>
      {
          subsystemsItems.map((option, key) => (
               <MenuItem key={key} value={option.value} primaryText={option.label} />
          ))          
      }
</SelectField>

【讨论】:

  • 好吧,现在我有控制台输出了。您能帮我从 SelectField 中获取“名称”属性来处理更改吗?
  • SelectField 不提供 name 属性,但您可以执行以下操作:onChange={(event, index, value) =&gt; this. handleSelectChange6(value, 'myField')} 其中myField 是您要用来标识字段的字符串。然后你可以把这个参数添加到handleSelectChange6(event, name)
  • 现在我遇到了在 SelectField 中看不到所选项目的问题。选择后我正确设置了我的变量。属性值不起作用
  • 抱歉,将您的handleSelectChange6 定义更改为仅接受(value, name) 而只接受event
  • 现在,在加载页面后它会显示预选的最后一项。如果我选择某些东西,我可以在 this.state.SubsystemID 中更改变量,但在 SelectField 中不会更改
猜你喜欢
  • 2019-02-25
  • 1970-01-01
  • 2015-09-26
  • 1970-01-01
  • 2020-07-09
  • 2016-11-08
  • 1970-01-01
  • 2020-03-22
  • 2016-12-26
相关资源
最近更新 更多