reactjs - 如何对 Ant Design V2.x 表中的数据进行排序?
问题描述
我正在使用Ant Design V2.X,但无法更新到更新版本。我继承了代码,我正在努力根据特定列对数据进行排序。它应该被订购一次,而不是动态排序。
这就是我在return()
React 组件的功能中所拥有的:
<Table size="small"
dataSource={this.props.Data}
rowKey={(record) => (record.LedgerId * 100 + record.PositionId).toString()}
pagination={false}
showHeader={true}
>
我假设rowKey
会根据箭头函数对我的数据进行排序,但事实并非如此。大家能指导我如何解决这个问题吗?
背景资料
在组件中,我有以下声明:
export interface ViewTableProps {
selectedEntity: number,
Data Interfaces.ViewEntry[],
}
和其他地方
export interface ViewEntry {
//Id: number,
LedgerId: number,
PositionId: number,
Value: number,
children: ViewEntry[]
}
相关和不那么相关的帖子
解决方案
如果要将实际的排序器添加到各个列,则需要在sorter
列定义的属性中编写排序函数。如果要默认对整个数据集进行排序,可以在将 dataSource 传递给表之前对其进行排序。
他们的文档中的列排序:
{
title: 'Age',
dataIndex: 'age',
defaultSortOrder: 'descend',
sorter: (a, b) => a.age - b.age,
},
如果你想要一个“默认排序”,你可以创建一个函数来对表外的数据进行排序;
const sortData = (data) => {
// Call slice to create a new Array and prevent mutating it if it's stored in state
return data.slice().sort((a, b) => a.myKey - b.myKey);
}
...
<Table size="small"
dataSource={sortData(this.props.Data)}
rowKey={(record) => (record.LedgerId * 100 + record.PositionId).toString()}
pagination={false}
showHeader={true}
>
推荐阅读
- django - Django 表单:在不更改用户名的情况下更新用户的属性
- view - Airtable:将两个表连接成一个统一的主输出
- css - 使用asp.net在adminlte中注销样式
- java - 如何从 Java 中的 Scala 包中导入单例对象?
- typescript - 打字稿中有没有办法确保函数的输入签名与输出签名相同?
- java - WildFly Server 20 中的 Spring 5 正确配置
- arrays - Elimante 如何在多个数组中复制数据
- regex - 正则表达式在句子中提取两个字符串
- angular - 订阅结果时未捕获来自 HTTP 调用的错误,但在我的 HTTP 拦截器中捕获了错误
- mysql - mysql更新当前数据