使用mulitple = true关闭SelectField菜单

时间:2017-04-18 16:52:08

标签: reactjs input drop-down-menu material-ui

我试图从外面关闭一个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从头开始实现此组件?

0 个答案:

没有答案