2 回答

TA貢獻(xiàn)1807條經(jīng)驗(yàn) 獲得超9個(gè)贊
好吧,經(jīng)過(guò) 4-6 小時(shí)的嘗試,我終于找到了解決方案。問(wèn)題源于 ECMAScript 時(shí)間戳格式。
我的時(shí)間戳格式:“YYYY-MM-DD HH:MM:SS”
支持的 ECMAScript 時(shí)間戳:“YYYY-MM-DDTHH:MM:SS” - “T”
工作代碼:
const sorted = notifications.slice().sort((x, y) => {
var dateStringX = x.created_at.replace(" ", "T");
var dateStringY = y.created_at.replace(" ", "T");
return new Date(dateStringY).getTime() - new Date(dateStringX).getTime();
});
setNotifications(sorted);

TA貢獻(xiàn)1884條經(jīng)驗(yàn) 獲得超4個(gè)贊
從代碼中不確定,但 notification.created_at 是什么?那是在epochmilli嗎?它只是一個(gè)數(shù)字嗎?如果是這樣,則無(wú)需將其轉(zhuǎn)換為日期,然后運(yùn)行 .getTime()。您應(yīng)該能夠?qū)?x.created_at - y.created_at 進(jìn)行排序。這可能就是問(wèn)題所在。
此外,順便說(shuō)一句,您可以將此代碼簡(jiǎn)化為:
const { notifications } = useContext(MainContext);
const sortedNotification = [...notifications].sort((x, y) => x.created_at - y.created_at);
return (... your view)
這樣做可以為您節(jié)省重新渲染,因?yàn)槟槐卦O(shè)置狀態(tài)。
希望有幫助!
添加回答
舉報(bào)