Алголия Бесконечный поиск с несколькими индексами - PullRequest
0 голосов
/ 15 февраля 2020

Я пытаюсь использовать мультииндексы Algolia наряду с бесконечной реализацией поиска.

      <InstantSearch
        indexName={`${process.env.ALGOLIA_PREFIX}_A`}
        searchClient={searchClient}
      >
        <AlgoliaIndex indexName={`${process.env.ALGOLIA_PREFIX}_B`} />
        <Configure hitsPerPage={20} />
        <IndexResults>
            <SearchHit filter={filter} content={data} />
        </IndexResults>
      </InstantSearch>

Вместо того, чтобы использовать connectInfiniteHits и позволить решать, какие хиты будут отображаться, я должен выяснить, какой контент должен отображаться через это:

      const content = allSearchResults || searchResults;
      const a = content[`${process.env.ALGOLIA_PREFIX}_a`];
      const b = content[`${process.env.ALGOLIA_PREFIX}_b`];

      if (!data.a[a.page]) {
        const newData = { ...data };
        newData.a[a.page] = a.hits;
        setData(newData);
      }

      if (b && !data.b[b.page]) {
        const newData = { ...data };
        newData.b[b.page] = b.hits;
        setData(newData);
      }

Итак, это работает для бесконечной прокрутки, но не удается при попытке поиска. Для обработки поиска я использую:


  useEffect(() => {
    if (search) {
      setData({
        a: {},
        b: {}
      });
    }
  }, [search]);

, что сопряжено с некоторыми крайними случаями, особенно когда поле поиска пусто. Должен ли я думать об этом по-другому? Как это должно работать?

...