Reactjs 数据透视表中的过滤器

Reactjs 数据透视表中的过滤器,reactjs,filter,react-table,Reactjs,Filter,React Table,我使用react table来呈现一个数据透视和聚合的表。 但是,筛选器不再工作:每次我筛选时,都不会返回任何行。在我添加数据透视和聚合之前,这些过滤器工作得非常好 有什么建议吗?在聚合/旋转时,提供给过滤器方法的值略有不同 我使用Fuse.js和filterAll={true}对某些字段进行模糊筛选,并必须更新函数以包含\u pivotVal,作为筛选工作检查的一部分 filterMethod: (filter, rows) => { var fuse = new Fuse(ro

我使用react table来呈现一个数据透视和聚合的表。 但是,筛选器不再工作:每次我筛选时,都不会返回任何行。在我添加数据透视和聚合之前,这些过滤器工作得非常好


有什么建议吗?

在聚合/旋转时,提供给
过滤器方法的值略有不同

我使用Fuse.js和
filterAll={true}
对某些字段进行模糊筛选,并必须更新函数以包含
\u pivotVal
,作为筛选工作检查的一部分

filterMethod: (filter, rows) => {
    var fuse = new Fuse(rows, { keys: [ filter.id, "_pivotVal" ]});
    var res = fuse.search(filter.value);
    return res;
}

这个答案与反应表有关,而不是。 (OP使用哪个版本的问题不清楚,但我发现关于v6的这个问题的信息很少,所以我将发布我所看到的)

如果您希望对已聚合的行进行筛选(即,在包含列a和B的表中,a是轴,B是聚合的,而您希望对列B进行筛选),我发现我可以使用
行。_subRows

我有一个列,它指定了它的聚合(换句话说,它指定了由轴折叠的行的该列的显示内容)。我意识到该列的标准
filterMethod
接收具有此不同“聚合”值的聚合行。如果我在
filterMethod
中为此行返回
false
(因为聚合值不是我试图筛选的值,而是不同的值),filter方法将拒绝此聚合翼下的所有“子行”,因为它拒绝了数据透视行

解决这个问题的方法是,如果要按子行进行筛选,就不要抛出包含子行的数据透视行。(然后将它们传递到聚合行之后的
过滤器方法

我现在过滤这些聚集的行的方法是,如果
行。_subRows
未定义的
,那么我知道我正在处理一个“未聚集的行”,并像往常一样简单地过滤。否则(当
行。_subRows
未定义
)则我知道我正在处理顶级聚合行,并返回
true
,因此子行被传递到
过滤器方法
。像这样:

filterMethod:(过滤器,行)=>{
if(行.\u subRows==未定义){
返回行[filter.id].toLowerCase().includes(filter.value.toLowerCase())
}否则{
返回true;
}
需要注意的两件事是:

  • 过滤时,行仍将在其轴上折叠,但展开时,值将受到过滤器的限制。折叠是一个单独的问题,我对解决这个问题没有信心
  • 您可能不希望包含没有与筛选器匹配的子窗口的聚合行。我尚未对此进行彻底测试,但我当前的解决方案可能会保留这些行,即使没有子窗口匹配,因为它们在筛选中被标记为true。解决此问题的一种方法可能是检查
    \u subrow
    的实际值,并如果知道有要显示的子窗口,则仅返回
    true

  • 请注意react table v6的其他过滤方面,以及它们与我在这里所说的内容和我有限的理解之间的关系。

    我们需要代码来帮助您。。。