【问题标题】:How to order data in an Ant Design V2.x table?如何对 Ant Design V2.x 表中的数据进行排序?
【发布时间】:2020-04-30 08:36:21
【问题描述】:

我正在使用Ant Design V2.X,但我无法更新到较新的版本。我继承了代码,我正在努力根据特定列对数据进行排序。它应该被订购一次,而不是动态排序。

这就是我在 React 组件的 return() 函数中的内容:

<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[]
}

相关和不那么相关的帖子

【问题讨论】:

    标签: reactjs antd


    【解决方案1】:

    如果您想为各个列添加实际的排序器,您需要在列定义的sorter 属性中编写排序函数。如果要默认对整个数据集进行排序,可以在将数据源传递给表之前对其进行排序。

    列排序from their docs:

    {
        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}
    >
    
    

    【讨论】:

    • 感谢您提供非常有用的提示,我会尝试的。我错过的技巧是对数据进行预排序。
    • 是的,我知道没有内置方法。希望能成功!
    【解决方案2】:

    如果您想订购日期,我建议您这样做:

    import moment from 'moment';
    

    并添加

    {
     title: 'Date',
     dataIndex: 'date',
     key: "date",
     sorter: (a, b) => moment(a.date).unix() - moment(b.date).unix()
    },
    

    【讨论】:

    • 为可以在构建 JS 中归档的内容添加 MomentJS 日期是不必要的,并且会影响整体包大小。它在整个供应商文件中添加了一个大块。
    猜你喜欢
    • 2018-11-25
    • 2020-04-16
    • 1970-01-01
    • 1970-01-01
    • 2012-02-24
    • 2017-05-17
    • 1970-01-01
    • 2017-07-08
    • 1970-01-01
    相关资源
    最近更新 更多