Reactivesearch - поиск с любого маршрута

Я экспериментирую с ReactiveSearch и использую компонент ReactiveList.

Я пытаюсь понять, как я могу перемещаться по своему приложению React и по-прежнему иметь возможность искать.

Скажем, я нахожусь на домашнем маршруте '/', использую компонент DataSearch для автозаполнения, и это переводит меня на страницу результатов '/results, но я не получаю никаких результатов !!

Чтобы получить результаты, мне нужно выполнить поиск и оставаться на странице '/results'. Есть ли опора, которую мне не хватает в моем компоненте DataSearch в заголовке:

<DataSearch
  componentId = "SearchSensor"
  dataField = {["original_title"]}
  className = "search-bar"
  showIcon = {true}
  iconPosition = "right"
  innerClass = {{
    title: "text-title",
    input: "text-input",
    list: "text-item"
  }}
  />

Опять же, чтобы получить результаты, мне нужно выполнить поиск из компонента DataSearch, который у меня есть на странице результатов. Поиск не работает, когда у меня есть поиск из компонента DataSearch, который находится в заголовке.

Итак, как я могу настроить его так, чтобы он мог выполнять поиск с любого маршрута, на котором я мог бы быть (например, поиск из компонента DataSearch, который находится в заголовке)?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
1
0
652
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Здесь вы будете использовать DataSearch только для автозаполнения, а затем перенаправить на страницу результатов для фактических результатов. Для этого вы можете использовать опору onValueSelected на DataSearchдокументы:

onValueSelected is called with the value selected via user interaction. It works only with autosuggest and is called whenever a suggestion is selected or a search is performed by pressing enter key. It also passes the cause of action and the source object if the cause of action was 'SUGGESTION_SELECT'.

Таким образом, вы можете получить выбранное значение на домашней странице, а затем использовать его для выполнения поиска на странице результатов. Это значение можно сохранить в состоянии вашего компонента для выполнения поиска, или вы также можете добавить DataSearch на страницу результатов и использовать опору URLParams для установки его значения из URL-адреса. Например:

Домашняя страница

<DataSearch
  ...
  componentId = "q"
  onValueSelected = {(val) => Router.push(`?q=${val}`)}  // using nextjs router here for example
/>

Страница результатов

<DataSearch
  ...
  componentId = "q"  // will set its value from the param 'q'
  URLParams
  className = "hidden"  // adding some CSS to hide it if not needed
/>

<ReactiveList
  ...
  react = {{
    and: ['q']
  }}
/>

В качестве альтернативы вы можете использовать onValueSelected на домашней странице, чтобы установить выбранное значение в состоянии (или хранилище), а затем запросить ReactiveList на странице результатов с помощью defaultQuery prop документы.

Похоже, что пока у меня установлен componentId = "q" и я использую onValueSelected для маршрутизации результатов в моем компоненте DataSearch, я могу использовать один и тот же компонент DataSearch как на домашней странице, так и в моем компоненте React Navbar, и он должен давать результаты, если с домашней страницы или любого другого маршрутизатора в приложении? Это правильно?

user3125823 24.08.2018 17:17

Ага, именно так :)

Divyanshu Maithani 24.08.2018 17:58

Другие вопросы по теме