Таблица материалов CustomSort не работает с датами

Я получаю столбец от api, который содержит Dates + _number (пример: «20/12/2019_1» в виде строки). Функция сортировки группирует данные подсчета в виде строки, а не столбца даты. Это означает, что мне нужно выполнить customSort. Итак, я создал функцию для преобразования этой строки в объект Date, но когда я возвращаю значение, ничего не происходит ...

Столбцы:

Столбцы

utils.js:

utils.js

Функция formatLot работает должным образом, так как я хочу сортировать значение как тип Date.

Результат функции formatLot:

Результат функции formatLot


person xStorm111    schedule 08.01.2020    source источник


Ответы (1)


Вы неправильно используете пользовательскую сортировку.

Как видно из документов, вы должны вернуть сравнение двух дат как число, но вы возвращаете только объект даты.

Измените его на, и он будет работать:

customSort: (a,b) => formatLot(a.test).getTime() - formatLot(b.test).getTime()
person Domino987    schedule 08.01.2020
comment
В примере документации длины используются для выполнения customSort, я не могу использовать длины в этом случае и не могу найти что-то похожее. Я думаю, вы не поняли суть вопроса. Я не возвращаю строку, я возвращаю объект. localeCompare предназначен только для строк. К сожалению, внесенные вами изменения мне не помогают в этом случае - person xStorm111; 08.01.2020
comment
Я обновил свой ответ, я думал, ты вернешь строку. Это должно сработать. - person Domino987; 08.01.2020
comment
По-прежнему не работает. я изменил на: customSort: (a,b) => formatLot(a.test).getTime() - formatLot(b.test).getTime() и получил TypeError: Object (...) (...). getTime не является функцией - person xStorm111; 08.01.2020
comment
вы можете поместить это в песочницу, чтобы я мог взглянуть на ваш код? - person Domino987; 08.01.2020
comment
Да, конечно ... По всей видимости, он работает с кодами и ящиком ... [codeandbox .io / s / material-table-customort-date-cgppk]. - person xStorm111; 08.01.2020
comment
Хорошо, я нашел проблему! Я также передаю нулевые значения, и здесь происходит сбой ... мне нужно сделать проверку на нули, и он отлично работает. Большое спасибо за помощь, вы сэкономили мне много времени - person xStorm111; 08.01.2020