Multisort似乎工作得很好…只要您使用内置排序类型(请参阅本示例,该示例加载默认排序中包含的前两列)。当我尝试使用自定义排序函数时,排序似乎只考虑指定的第一列(请参阅本示例,它与函数式第一个示例相同—尽管它指定了自定义排序函数)。我试着查看文档,以及查看内置排序类型的源代码,我没有看到任何不同于我正在做的事情。
(有趣的是,排序图标会使两列看起来都排序了;但是,如果在自定义排序函数中设置一个断点,就可以清楚地看到,它永远不会对第二列调用。另外值得注意的是,只有当两个列都使用自定义排序时,这似乎才是一个问题。如果我修改第二个示例,使第一列使用一种内置排序类型(要么手动使用一种,要么只接受默认类型),那么multisort似乎就能按预期运行。在相反的情况下,对第一列使用自定义排序,对第二列使用内置排序,同样只对指定的第一列进行实际排序。我也[张贴这作为一个潜在的错误在项目本身][https://github.com/tannerlinsley/react-table/issues/3512],但我交叉张贴它在这里的机会,我只是错过了一些东西,当我试图实现我的自定义排序函数)
从相应的项目问题:
事实上,这似乎是自定义排序类型的问题。您可以看到,在您提供的示例中,您的defaultAlphanumericSort
只返回1或-1。然而,如果你观察react-table
的defaultOrderByFn
,你会注意到二级(三级等等……)只有当前面的排序函数返回0时,才会应用排序。扩展您的自定义排序类型,使其在相等时返回0,这样就可以了。