ReactiveSearch - пытается запросить точное значение из сопоставления - PullRequest
0 голосов
/ 11 сентября 2018

Я следовал учебным пособиям по ReactiveSearch и использую их с React и размещенным экземпляром Elastic на Appbase.io. В настоящее время у меня есть окно поиска с автозаполнением, как показано в окне CodeSandbox ниже.

Я пытаюсь сделать так, чтобы поведение onValueSelected могло возвращаться к значению из dataField. Например. если вы введете значение, код перенаправит вас на document.location.href = './$ndomname Event'

Представьте, что вы набираете "ap", нажимаете ввод и переходите в "/ apple", потому что это первый результат. Я не могу найти какую-либо информацию о ссылке на "имя" в коде onValueSelected.

Ссылка CodeSandbox: https://codesandbox.io/embed/wqjpoq25w

<DataSearch
 className=""
 autosuggest={true}
 strictSelection={true}
 componentId="search"
 placeholder="Search Name/Ticker"
 dataField={["symbol", "name"]}
 onValueSelected={value => {
     document.location.href = `./${value}`;
 }}
/>

1 Ответ

0 голосов
/ 11 сентября 2018

Здесь с strictSelection вы также можете проверить причину выбора значения, и если причиной выбора значения было предложение, оно также даст вам объект source (из предложения), с помощью которого вы можете извлечь любое поле.Из onValueSelected документов :

onValueSelected вызывается всякий раз, когда выбрано предложение или поиск выполняется нажатием клавиши ввода.Он также передает причину действия и объект source, если причиной действия было 'SUGGESTION_SELECT'.Возможные причины:

'SUGGESTION_SELECT'

'ENTER_PRESS'

'CLEAR_VALUE'

Вот как вы можете использовать sourceобъект в сочетании с причиной выбора:

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

Демо

...