有什么方法可以使用 isMulti 而不会删除我已经选择的选项?换句话说,有 duplicate/repeated 个选项?

Is there any way I can use isMulti without it deleting choices I've already picked? In otherwords, having duplicate/repeated selected options?

基本上,我想使用 react-select 库并使用 isMulti 道具,但问题是在选择一个选项后,该值将被删除。正如您在下面提供的图像中看到的那样,只要我单击 "US: 1",该选项就会消失。但是对于我尝试构建的应用程序,客户当然有可能想要 2 个相同尺寸的应用程序。因此,他们会选择 2 "US: 1",它会自动将数量设置为 2。问题是,一旦他们选择 "US: 1",该选项就会消失。

这就是我目前的全部。

const options = [
    {value: 1, label: "US: 1"},
    {value: 1.25, label: "US: 1.25"},
    {value: 1.5, label: "US: 1.5"},
    {value: 1.75, label: "US: 1.75"},
    {value: 2, label: "US: 2"},
    {value: 2.25, label: "US: 2.25"},
]
class Details extends Component {
 state={
        selectedOption: []
    }
 handleChange = (selectedOption) => {
        this.setState({ selectedOption: selectedOption });

    }
render() {

<Select isMulti={true} isSearchable={true} onClick={value.changeSize(id, selectedOption)} value={selectedOption} onChange={this.handleChange} options={options}></Select>
}
}

这是我所说的一个例子。 "US: 1" 在我希望保留该选项时单击它时消失。我认为它会改变我的 "options" 数组并显示没有单击选项的新数组。如果我能以某种方式在每次 onChange 之后继续为它提供这些原始值,那就太棒了。我不确定如何深入研究图书馆如何去做,或者是否有可能。 https://www.npmjs.com/package/react-select

这里我会怎么做:

class Details extends Component {
  state = {
    selectedOption: []
  };
  handleChange = selectedOption => {
    const newSelectedOption = selectedOption.map(opt => ({
      label: opt.label,
      innerValue: opt.value,
      // I set a random value because it is needed to be able to delete the value without deleting all of them
      value: Math.random()
    }));
    this.setState({ selectedOption: newSelectedOption });
  };
  render() {
    return (
      <Select
        isMulti={true}
        isSearchable={true}
        value={this.state.selectedOption}
        onChange={this.handleChange}
        options={options}
      />
    );
  }
}

我们的想法是不使用 value 作为其最初的目标。当 label 道具被传递到 Select 内部的 value 时,它仍然会正确显示。所以你会立足于innerValue,把戏react-select

这里是live example

我猜你只需要将 hideSelectedOptions={false} 添加到 <Select />。 喜欢:

<Select 
  isMulti={true} 
  hideSelectedOptions={false}
  options={options}
  ...
/>