【问题标题】:ReactiveSearch - Can't Force a Selection (e.g. strictSelection) from the autoComplete?ReactiveSearch - 无法从自动完成中强制选择(例如strictSelection)?
【发布时间】:2018-09-10 21:35:40
【问题描述】:

我已经按照 ReactiveSearch 的教程进行操作,并且我将它与 React 和 Appbase.io 上托管的 Elastic 实例一起使用。

我希望用户看到自动建议,但只能从建议列表中进行选择(因此如果“foo”不在建议列表中,则不应执行查询)。

这是因为我不想有一个搜索结果页面,只是为了让应用程序根据所选值立即将您带到正确的页面。

我认为我可以使用 strictSelectiononValueSelected 来做到这一点,但它仍然允许像“foo”这样的值(它不是自动完成值)通过.

import React, { Component } from "react";
import ReactDOM from "react-dom";

import { ReactiveBase, DataSearch } from "@appbaseio/reactivesearch";

class Main extends Component {
  render() {
    return (
      <div className="flex-col lighter">
        <ReactiveBase
          app="bravos"
          credentials="b8AuX6o06:19f6637f-0a80-48f7-8fe7-9fa0339b7c71"
        >
          <DataSearch
            className=""
            autosuggest={true}
            strictSelection={true}
            componentId="search"
            placeholder="Search Name/Ticker"
            dataField={["symbol", "name"]}
            onValueSelected={value => {
              document.location.href = `./${value}`;
            }}
          />
        </ReactiveBase>
      </div>
    );
  }
}

ReactDOM.render(<Main />, document.getElementById("root"));

代码沙盒链接:https://codesandbox.io/embed/wqjpoq25w

【问题讨论】:

  • 请查看how to askMVCE 然后edit 根据 SO 指南将相关代码嵌入问题正文中。这使当前用户更容易为您提供帮助,未来的用户可以查看您的问题是否会帮助他们而无需在网络上跳来跳去,而且还可以确保 SO 本身 Q/A 的完整性 - 如果链接变得无法访问,这篇文章将变得无用。谢谢你,祝你找到解决办法。
  • @SherylHohman 当然更新了,谢谢。

标签: reactjs elasticsearch reactivesearch


【解决方案1】:

你几乎得到它。 strictSelection这里的关键是还要检查onValueSelected中值选择的原因docs

onValueSelected 在选择建议或通过按回车键执行搜索时调用。如果操作原因是“SUGGESTION_SELECT”,它还会传递操作原因和源对象。可能的原因有:

'SUGGESTION_SELECT'

'ENTER_PRESS'

'CLEAR_VALUE'

此 API 有助于为 strictSelection 编写不同的流程。以下是检查建议选择的方法:

<DataSearch
  ...
  onValueSelected={(value, cause, source) => {
    if (cause === 'SUGGESTION_SELECT') {
      document.location.href = `./${value}`;
    }
  }}
/>

Demo

【讨论】:

  • 谢谢!太棒了。我曾尝试使用 SUGGESTION_SELECT,但不正确,因此可能有助于将这个演示放在那里。非常感谢。
  • 搜索框的行为现在几乎是完美的,但如果可能的话,我最不想做的就是在输入时自动选择最热门的搜索建议。因此,如果您键入“app”,按回车键,并且最上面的结果是 AAPL,它会查询 AAPL(即使您没有通过键或鼠标从建议中选择它)。
  • 为此,您必须创建一个自定义ReactiveComponent,因为目前无法以这种方式扩展组件。我有一个建议here 让它更容易,但它还没有得到解决。如果你愿意,你也可以添加你的想法:)
  • 哇,那么自动建议似乎不是一个有用的功能,对吧?我这里有代码 - bravos.co - 尝试输入“aa”,然后按 Enter 键?有没有办法做到这一点并产生有用的行为结果?再次感谢。
  • 这里的另一种方法是允许将 prop 修改为内部使用的 Downshift 下拉组件。添加了一个问题here。您可以订阅它以获取更新:)
猜你喜欢
  • 2012-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多