我试图从外面关闭一个SelectField。我的想法是,我有一个多个selectField(根据定义,它不会在更改时关闭)和"全部清除"下拉菜单中的项目,取消选择单击时的所有项目。
我的代码与此类似:
class MultiSelect extends Component {
state = {values: []}
clear = () => {
this.setState({values: []});
// FixMe: close the DropDownMenu here.
};
handleChange = (e,i,v) => {
this.setState({values: v});
};
render() {
const {title, choices, style} = this.props;
const {values} = this.state
return <div style={{...style}}>
<SelectField
floatingLabelText={title}
multiple
value={values}
onChange={this.handleChange}
>
<MenuItem value={null} primaryText="Clear All" onTouchTap={this.clear}/>
<Divider/>
{choices.map((d,i) =>
<MenuItem key={i} value={d} primaryText={d} checked={values.includes(d)}/>
)}
</SelectField>
</div>
}
}
实现此目标的最佳方法是调用DropDownMenu.close()
函数。使用新引入的dropDownMenuProps
SelectField
道具我认为我可以这样做,但是这个函数显然会被DropDownMenu
覆盖。
那么,是否有其他方法可以实现这一目标,还是应该直接使用DropDownMenu
从头开始实现此组件?