ElemeFE / element-react

Element UI
https://elemefe.github.io/element-react/index
MIT License
2.84k stars 443 forks source link

[Bug Report] Multiple Select has option order problem when it has controlled value. #972

Open Emiya0306 opened 5 years ago

Emiya0306 commented 5 years ago

Description

当多选Select是一个value受控的元素时,选择的tag和onChange的value会有顺序问题。 多选Select在远程搜索的情况下,当value受控时,选择一个option后,输入框内的值被重置为空。

Reproduce Steps

  1. 给select加上value={this.state.value},multiple,onChange={this.handleInput.bind(this)}属性
  2. 点击顺序为"北京烤鸭", "龙须面", "蚵仔煎", "双皮奶", "黄金糕"。
  3. 顺序发生错乱

基础多选

适用性较广的基础多选,用 Tag 展示已选项

:::demo 为Select设置multiple属性即可启用多选,此时value的值为当前选中值所组成的数组

constructor(props) {
  super(props);

  this.state = {
    options: [{
      value: '选项1',
      label: '黄金糕'
    }, {
      value: '选项2',
      label: '双皮奶'
    }, {
      value: '选项3',
      label: '蚵仔煎'
    }, {
      value: '选项4',
      label: '龙须面'
    }, {
      value: '选项5',
      label: '北京烤鸭'
    }],
    value: []
  };
}

handleInput(value) {
  console.log(value);
  this.setState({ value });
}

render() {
  return (
    <Select value={this.state.value} multiple={true} onChange={this.handleInput.bind(this)}>
      {
        this.state.options.map(el => {
          return <Select.Option key={el.value} label={el.label} value={el.value} />
        })
      }
    </Select>
  )
}

:::

Error Trace (if possible)

Solution

Additional Information