1

这是一个非常直接的问题。注意我有多个属性。当我选择一个值时,它只是将一个值推入一个数组。因此,如果我有多个值,它会给我一个包含多个值的数组,但不是我选择的特定选项。

现在我的问题是当我从下拉列表中删除它时如何获得该特定值?我已经在谷歌搜索了一个小时,但没有找到答案。

<Dropdown 
    options={options} 
    onChange={this.onChange.bind(this)}
    search fluid multiple selection/>

onChange(e,  { value } ) {
        e.preventDefault();     
       // e.target.value DOESN'T WORK???!!!

    }
4

1 回答 1

2

因此,语义 UI 的下拉菜单似乎并没有提供开箱即用的功能。但是,有一种不错的方法可以实现这一目标。首先,创建一个像这样的状态:

this.state = {
  selected: [],
}

然后,将一个函数绑定到 Dropdown 组件,如下所示:

<Dropdown
  placeholder="Skills"
  fluid
  multiple
  selection
  options={options}
  onChange={this.handleChange}/>

完成后,编写handleChange函数来比较每次更改的数组长度。如果状态数组比您从下拉列表中获得的任何数组长,则该项目已被删除,您可以检查哪一个。否则,将数组转储到状态中。

handleChange = (e, { value }) => {
    if (this.state.selected.length > value.length) { // an item has been removed
        const difference = this.state.selected.filter(
            x => !value.includes(x),
        );
        console.log(difference); // this is the item
        return false;
    }
    return this.setState({ selected: value });
};

不过,您需要一个 polyfill 才能在 IE8 及以下版本中运行。

于 2018-12-09T04:27:36.753 回答