首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何关闭``react select`中的``deselect option`?

如何关闭``react select`中的``deselect option`?
EN

Stack Overflow用户
提问于 2019-07-31 01:45:29
回答 1查看 3.4K关注 0票数 3

我希望使用react-select multi Select组件,并且能够多次选择相同的选项。但是,react-select不允许这样做。您可以使用hideSelectOptions={false}更改下拉列表以显示已选择的选项,但如果您再次选择其中一个选项,它将被取消选择。

这个问题#3234描述了同样的问题,并且sugggests解决这个问题的一种方法是以某种方式处理onChangeaction参数。

下面是我尝试的基于suggested solution的解决方案

代码语言:javascript
复制
import React, { Component } from "react";
import Select from "react-select";


export default class MultiSelect extends Component<*, State> {
  handleChange(option, action) {
    console.log(option, action);
    // return;
    if (action === "deselect-option") {
      action = "select-option";
      // now how do I do the component's state?
    }
  }

  render() {
    return (
      <Select
        isMulti
        className="basic-single"
        classNamePrefix="select"
        name="color"
        options={[{"label": "hello", "value": "hello"}, {"label": "world", "value": "world"}]}
        hideSelectedOptions={false}
        onChange={this.handleChange}
      />
    );
  }
}

我希望能够多次输入"hello“,但当我再次尝试输入"hello”时,它被删除了。

EN

回答 1

Stack Overflow用户

发布于 2019-10-16 19:39:26

在options中,数据字段使用任何键来动态化值,在本例中,使用Date.now()来动态化。然后使用操作'select- option‘追加到选项,使用操作’remove-value‘筛选标签与所选选项标签匹配的选项数据字段中的所有字段,并追加到数据并将另一个对象追加到选项数据字段

代码语言:javascript
复制
options = [
{ value: Date.now(), label: "SUBJECT" ,val:"SUBJ" },
{ value: Date.now, label: "VERB", val:"VERB" }
]

<Select options={options} isMulti onChange={(e, option) => {
if (option.action === "select-option") {
    Options=[
    ...Options,
    {
        value: option.option.value + "_" + Date.now(),
        label: option.option.label
    }
    ];
} else if (option.action === "remove-value" ||option.action ===  "pop-value") {

    tempData = data.filter(opt => opt.label !== option.removedValue.label)
    Options=[
    ...tempData,
    {
        value: option.removedValue.value + "_" + Date.now(),
        label: option.removedValue.label
    }
    ]
}
}
} />
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57277305

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档