React开发:Material-Table自定义排序如何获取排序顺序,让null日期始终后置
Material-Table 日期排序:让Null值始终排在最后
Material-Table 的 customSort 函数支持第三个参数 sortDirection,它会传入当前的排序方向(asc 或 desc),你可以利用这个参数实现需求:
customSort: (a, b, sortDirection) => { // 优先处理null值,确保null始终排在最后 if (a.paymentDate === null && b.paymentDate !== null) { return 1; } if (a.paymentDate !== null && b.paymentDate === null) { return -1; } // 非null日期根据排序方向比较 const dateA = new Date(a.paymentDate); const dateB = new Date(b.paymentDate); return sortDirection === 'asc' ? dateA - dateB : dateB - dateA; }
逻辑说明:
- 先判断null情况:只要其中一项的
paymentDate为null,就把该项往后排,这部分逻辑和排序方向无关,保证null始终在末尾。 - 当两个日期都不为null时,根据传入的
sortDirection决定升序或降序的比较方式。 - 注意:如果
paymentDate是字符串格式,务必先转为Date对象再比较,避免字符串直接相减导致错误。
内容的提问来源于stack exchange,提问作者sruthi_ys
相关产品推荐
相关产品推荐

