Javascript 参考资料UI从onChange处理程序中选择字段组件

Javascript 参考资料UI从onChange处理程序中选择字段组件,javascript,reactjs,material-ui,Javascript,Reactjs,Material Ui,我有一个表单,其中有很多SelectField组件(15+)-我试图避免使用多个更改处理程序函数,但我很难找到如何引用触发更改的特定SelectField,以便相应地更新状态 我已经尝试添加一个id、ref,以及我以前见过的所有可能的解决方案,但都没有效果 <SelectField value={this.state.selectedFramework} onChange={this.handleChange} style={style}> <MenuItem valu

我有一个表单,其中有很多SelectField组件(15+)-我试图避免使用多个更改处理程序函数,但我很难找到如何引用触发更改的特定SelectField,以便相应地更新状态

我已经尝试添加一个id、ref,以及我以前见过的所有可能的解决方案,但都没有效果

<SelectField value={this.state.selectedFramework} onChange={this.handleChange} style={style}>
    <MenuItem value={0} primaryText="Please select..." />
    {this.props.frameworks.map(this.renderMenuItem)}
</SelectField>
但这显然不能被多个selectfield组件使用,因为状态键是硬编码的。我需要引用触发更改的select,以便知道要更新的状态键


有什么建议吗?

创建一个箭头函数并传入选择字段的索引:

{this.state.selectFields.map((v, i) => {
    <SelectField value={v} onChange={(e, _, v) => this.handleChange(e, i, v)} style={style}>
        <MenuItem value={0} primaryText="Please select..." />
        {this.props.frameworks.map(this.renderMenuItem)}
    </SelectField>
}

handleChange = (event, index, value) => {
    const selectFields = this.state.selectFields.slice();
    selectFields[index] = value;
    this.setState({selectFields});
};
{this.state.selectFields.map((v,i)=>{
this.handleChange(e,i,v)}style={style}>
{this.props.frameworks.map(this.renderMenuItem)}
}
handleChange=(事件、索引、值)=>{
const selectFields=this.state.selectFields.slice();
选择字段[索引]=值;
this.setState({selectFields});
};
{this.state.selectFields.map((v, i) => {
    <SelectField value={v} onChange={(e, _, v) => this.handleChange(e, i, v)} style={style}>
        <MenuItem value={0} primaryText="Please select..." />
        {this.props.frameworks.map(this.renderMenuItem)}
    </SelectField>
}

handleChange = (event, index, value) => {
    const selectFields = this.state.selectFields.slice();
    selectFields[index] = value;
    this.setState({selectFields});
};