2 回答

TA貢獻1807條經驗 獲得超9個贊
好吧,經過 4-6 小時的嘗試,我終于找到了解決方案。問題源于 ECMAScript 時間戳格式。
我的時間戳格式:“YYYY-MM-DD HH:MM:SS”
支持的 ECMAScript 時間戳:“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貢獻1884條經驗 獲得超4個贊
從代碼中不確定,但 notification.created_at 是什么?那是在epochmilli嗎?它只是一個數字嗎?如果是這樣,則無需將其轉換為日期,然后運行 .getTime()。您應該能夠對 x.created_at - y.created_at 進行排序。這可能就是問題所在。
此外,順便說一句,您可以將此代碼簡化為:
const { notifications } = useContext(MainContext);
const sortedNotification = [...notifications].sort((x, y) => x.created_at - y.created_at);
return (... your view)
這樣做可以為您節省重新渲染,因為您不必設置狀態。
希望有幫助!
添加回答
舉報