React Native 如何更新我的instantsearch命中列表而无需重新安装我的组件?

7kqas0il  于 2023-03-31  发布在  React
关注(0)|答案(2)|浏览(131)

我需要经常刷新我的命中,因为新的项目被添加得非常频繁。这样可以避免我等待,直到我的组件被刷新或再次挂载之前,看到更新的结果列表。
但我不知道该怎么做。

export const Hits = connectInfiniteHits(({ hits, hasMore, refine,currentRefinement}) => {


return (

  // return all my results here

);
});

如何告诉我的无状态组件Hits使用更新的结果列表再次呈现?
我试过使用refine(),但它不工作。这个函数旨在加载更多的结果,但我需要简单地刷新所有的结果列表。
我还尝试了refresh属性,但列表就是不更新,我仍然需要手动重置我的组件以获得更新的列表。
有什么建议吗?

hfyxw5xn

hfyxw5xn1#

这是不可能,Algolia搜索对于React Native来说是可怕的。

o8x7eapl

o8x7eapl2#

我发现的“最干净”的方法是向InfiniteHits组件传递一个key prop,并在需要刷新时增加key state,从而有效地重新挂载组件。此外,您可以清除searchClient缓存以更新现有的命中。

const searchClient = algoliasearch(AlgoliaAppId, AlgoliaApiKey);

const [hitsKey, setHitsKey] = useState(0);
const handleRefresh = () => {
  setHitsKey(hitsKey + 1);
  searchClient.clearCache();

  // If you're using a FlatList, you also might want to
  // have a 'refreshing' state that gets updated here.
};
return(
  <InfiniteHits key={hitsKey} />
);

相关问题