【问题标题】:Material-table CustomSort doesn't work with Dates材料表 CustomSort 不适用于日期
【发布时间】:2020-01-08 10:16:18
【问题描述】:

我从 api 收到一个包含 Dates + _number 的列(例如:“20/12/2019_1”作为字符串)。排序函数会将计数数据分组为字符串,而不是日期列。这意味着我需要进行自定义排序。 所以我创建了一个函数来将该字符串转换为一个 Date 对象,但是当我返回该值时没有任何反应......

列:

utils.js:

formatLot 函数按预期工作,因为我想将值排序为日期类型。

formatLot 函数的结果:

【问题讨论】:

    标签: reactjs material-table


    【解决方案1】:

    您使用的自定义排序不正确。

    docs 中所见,您必须将两个日期的比较结果作为数字返回,但您只返回日期对象。

    改成这样就可以了:

    customSort: (a,b) => formatLot(a.test).getTime() - formatLot(b.test).getTime()
    

    【讨论】:

    • 文档示例使用长度来进行自定义排序,在这种情况下我不能使用长度并且我找不到类似的东西。我想你错过了理解这个问题。我没有返回一个字符串,我正在返回一个对象。 localeCompare 仅适用于字符串。幸运的是,在这种情况下,您所做的更改对我没有帮助
    • II 更新了我的答案,我以为你会返回字符串。这应该有效。
    • 还是不行。我改为:customSort: (a,b) => formatLot(a.test).getTime() - formatLot(b.test).getTime(),我收到 TypeError: Object(...)(...).getTime is not a function
    • 你能把它放在沙箱里,让我看看你的代码吗?
    • 是的,当然......显然它正在处理代码和框...... [codesandbox.io/s/material-table-customsort-date-cgppk]
    猜你喜欢
    • 2019-06-24
    • 2022-10-20
    • 1970-01-01
    • 2022-09-26
    • 1970-01-01
    • 2018-12-31
    • 2020-12-09
    • 2020-04-21
    • 2021-07-17
    相关资源
    最近更新 更多