因此,我已经在我的应用程序中成功实现了React InstantSearch库,并尝试将过滤器应用于优化列表(以确保显示的过滤器与 Activity 用户相关,而隐藏不与 Activity 用户相关的过滤器)。我尝试了以下方法:

<RefinementList attributeName="organization" transformItems={items => items.filter(e => refineList.indexOf(e)>=0)} />

其中fineList 是简单的字符串数组(即[“A”,“B”,“C”])

但是,RefinementList始终显示所有过滤器选项,而未对其应用“transformItems”功能。难道是我误解了“transformItems”的工作原理吗?

关于该主题的文档非常少,因此我相信它对于该库的许多其他用户会有所帮助。

最佳答案

transformItems函数具有一个参数:items。它期望得到返回。
items是具有以下形状的对象数组:

{
  label: string,
  value: array<string>,
  count: number,
  isRefined: bool,
}

要删除基于字符串数组的优化,可以执行以下操作:
const refineList = ['A', 'B'];
<RefinementList
    attributeName="organization"
    transformItems={items => items.filter(e =>
        refineList.indexOf(e.label) >= 0)}
/>

07-24 16:36