3

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

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

其中refineList是一个简单的字符串数组(即["A", "B", "C"])

然而,RefinementList 一直显示所有过滤器选项,而没有应用“transformItems”函数。是不是我误解了“transformItems”的工作原理?

关于这个主题的文档非常稀少,所以我相信它会对图书馆的许多其他用户有所帮助。

4

1 回答 1

8

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)}
/>
于 2017-05-15T08:54:13.930 回答