当没有选项与用户搜索值匹配时,反应选择默认值

时间:2019-05-28 03:27:34

标签: react-select

我有一个用于反应选择的数组,如下所示

[{label:"blue",value:"blue"},{label:"green",value:"green"},{label:"other",value:"other"}]

当用户尝试搜索蓝色和绿色(例如棕色,紫色)以外的其他选项时,应该在选项列表中显示该其他选项,以便用户可以选择“其他”

有什么方法可以在react-select中实现此功能

2 个答案:

答案 0 :(得分:0)

我认为您正在寻找与this post接近的地方。

基本上像这样使用let webViewTapped = UITapGestureRecognizer(target: self, action: #selector(self.tapAction(_:))) webViewTapped.numberOfTapsRequired = 1 webViewTapped.delegate = self webView.addGestureRecognizer(webViewTapped) @objc func tapAction(_ sender: UITapGestureRecognizer?) { print("touched") // Get the specific point that was touched let point: CGPoint? = sender?.location(in: view) webView.evaluateJavaScript("document.getElementById(\"hdfUserId\").value") {(response, error) in if (response != nil) { let title = response as! String print(title) } // error handling } } 道具:

filterOption

这是一个符合您要求的live example

答案 1 :(得分:0)

上述解决方案的一个小问题。 搜索变得区分大小写。解决很简单:

filterOption = (option, inputValue) => {

const inputValueToUpperCase = inputValue.toUpperCase();

   if (option.label === "Other") {
      const { options } = this.state;
      const result = options.filter(opt => opt.label.toUpperCase().includes(inputValueToUpperCase));
      this.setState({ hasExtraValue: !result.length });
      return !result.length;
   }

   return option.label.toUpperCase().includes(inputValueToUpperCase);
}

那样适合。我希望能帮助其他人。

这是一个符合您要求的live example