根据传递给单元格的属性im对列进行排序

时间:2019-03-29 18:17:55

标签: javascript reactjs react-table

        Header: "Votes",
        accessor: "Voter",
        filterable: false,
        Cell: row => <Voter id={row.index} vote={this.filterCount(row.index)} />,
        sortMethod: null //sort based on vote prop passed above ^

我希望根据传递给单元格中Voter组件的属性的最高值对表进行排序。除了传递给sortMethod的任何值之外,它都访问JSON文件中的数据,但是我需要使用从组件中提取的数据。有办法吗?任何帮助都非常感激

1 个答案:

答案 0 :(得分:0)

假设您使用的是react-table(已添加为标签),则可以为sort方法提供一个以2个值作为参数的函数:

sortMethod: (a, b) => {
            a = (a === null || a === undefined || a === '') ? -Infinity : a;
            b = (b === null || b === undefined || b === '') ? -Infinity : b;

            a = parseInt(a);
            b = parseInt(b);
            if (a === b) {
              return 0;
            }
            return a > b ? 1 : -1;
          }

sort方法应该像javascript类型使用的常规sort方法一样工作。这是一种非常基本的排序方法,它简单地按整数值进行排序,然后对大于b的b进行排序,并处理所有未定义变量的边沿情况,将其推到底部。

这有点抽象,足以告诉它如何对2个项目进行排序,它将应用于所有行。这些值不必命名为AB,这只是更简单。 A和B都代表2个像元值。 IF 您的单元格值是一个对象,而不是整数,则A和B也是对象,您应该使用要比较的值。例如,如果您的单元格值是ARE对象,并且您要基于表决器ID进行排序,则可以执行以下操作:

return a.voter_id > b.voter_id ? 1 : -1;

代替

return a > b ? 1 : -1;