【问题标题】:react-table not sorting decimal numbers correctly反应表没有正确排序十进制数字
【发布时间】:2021-11-17 08:21:46
【问题描述】:

我正在尝试使用 react-table 对带有小数的列进行排序,但排序呈现不正确。

这是尝试从上到下对年龄列进行排序时呈现的顺序:

0.89        
0.14    
0.8

什么时候应该渲染这个:

0.89
0.8 
0.14    

使用代码和框的问题演示: https://codesandbox.io/s/new-bird-puhhr?file=/src/App.js

单击age 列重现问题。

我已经设法通过覆盖orderByFn 使其工作。但是这个技巧只适用于排序一列。

orderByFn: function defaultOrderByFn(arr, funcs, dirs) {
  if (dirs[0]) {
    return arr.sort((a, b) => b.original.age - a.original.age);
  } else {
    return arr.sort((a, b) => a.original.age - b.original.age);
  }

非常感谢任何解决此问题的帮助。

【问题讨论】:

  • 如果您的沙箱只有重现问题所需的代码,它会更容易为您提供帮助。你有很多被注释掉的排序尝试,我不确定你打算使用哪一个。
  • 嗨,尼古拉斯。使用代码初始化代码框以重现错误。您只需单击age 列即可获得不正确的结果。抱歉,问题应该更清楚

标签: reactjs react-table


【解决方案1】:

您可以在react-table 中为每列应用自己的排序逻辑。

正如我在您的示例中看到的那样,您在初始化列时使用 sortType 字段覆盖默认排序已接近解决问题。

在年龄列的 sortType 字段中应用这个箭头函数,因为库会处理它,所以排序在升序和降序中都应该可以正常工作。

sortType: (rowA, rowB) => {
          if (rowA.original.age > rowB.original.age) return -1;
          if (rowB.original.age > rowA.original.age) return 1;
        }

根据您的示例查看codesandbox

【讨论】:

    猜你喜欢
    • 2019-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 2014-11-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多