Я пытаюсь использовать мультииндексы 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]);
, что сопряжено с некоторыми крайними случаями, особенно когда поле поиска пусто. Должен ли я думать об этом по-другому? Как это должно работать?