1

我正在尝试将排序方法应用于表中的一列。该列具有数值和空值(“--”)。我想以升序和降序方式对值进行排序。而且我希望所有空值都应该在两种排序类型中都放在表的底部。

任何人都可以建议使用 react-table-6 的自定义排序功能吗?

谢谢你...

4

1 回答 1

0

你问这个真是太疯狂了,因为我刚刚用完全相同的要求解决了这个确切的问题——你真幸运!

这是在 TypeScript 中,但您可以根据需要删除类型。

列:

  const columns: Column[] = useMemo(
    () => [
      {
        Header: 'Rank',
        accessor: 'rank',
        sortType: rankSort, // This is the rankSort() function below
        maxWidth: 10,
      },
      ...
    ],
    []
  );

这是排名功能:

const getRankValueString = (value: number, desc?: boolean): string => {
  let stringValue = value.toString();

  if (stringValue === '--') {
    if (desc) {
      stringValue = '-9999999';
    } else {
      stringValue = '9999999';
    }

    return stringValue;
  }

  for (let i = stringValue.length; i < 6; i++) {
    stringValue = `0${stringValue}`;
  }

  return stringValue;
};

const rankSort = (
  rowA: Row,
  rowB: Row,
  columnId: string,
  desc?: boolean
): number => {
  return getRankValueString(rowA.values[columnId], desc).localeCompare(
    getRankValueString(rowB.values[columnId], desc)
  );
};

这有点 hacky,但它会将值排序到 6 位。我对优化持开放态度。

于 2021-08-12T06:02:49.980 回答