fix: products计算使用useMemo避免重复排序的性能回归
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 17s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 1m32s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 1m37s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m15s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m9s
AI Code Review / AI Code Review (pull_request) Successful in 1m53s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 2m49s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Successful in 1m20s
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 4m44s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 1m39s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 1m41s
CI/CD Pipeline / Canary Release to Production (pull_request) Has been cancelled
CI/CD Pipeline / CI Gate (pull_request) Successful in 10s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Successful in 13s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 21s
CI/CD Pipeline / Production Browser E2E (pull_request) Failing after 1166h9m39s
CI/CD Pipeline / Deploy Production (pull_request) Failing after 1166h14m6s
CI/CD Pipeline / Build Production Worker Image (pull_request) Failing after 1166h18m6s
CI/CD Pipeline / Build Production Web Image (pull_request) Failing after 1166h18m6s
CI/CD Pipeline / Build Production API Image (pull_request) Failing after 1166h18m8s
CI/CD Pipeline / Integration Tests (pull_request) Failing after 1166h18m10s
CI/CD Pipeline / ACR Image Cleanup (pull_request) Failing after 1166h18m19s
CI/CD Pipeline / Staging API Integration Tests (pull_request) Failing after 1166h18m21s
CI/CD Pipeline / Staging E2E Tests (pull_request) Failing after 1166h18m23s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Failing after 1166h22m1s
CI/CD Pipeline / Unit Tests (pull_request) Failing after 1166h22m26s
CI/CD Pipeline / PR Build Worker Image (pull_request) Failing after 1166h22m3s
CI/CD Pipeline / Build Staging Worker Image (pull_request) Failing after 1166h25m36s
CI/CD Pipeline / Build Staging Web Image (pull_request) Failing after 1166h25m38s
CI/CD Pipeline / Build Staging API Image (pull_request) Failing after 1166h25m40s
CI/CD Pipeline / PR Build API Image (pull_request) Failing after 1166h55m28s
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 17s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 1m32s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 1m37s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m15s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m9s
AI Code Review / AI Code Review (pull_request) Successful in 1m53s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 2m49s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Successful in 1m20s
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 4m44s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 1m39s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 1m41s
CI/CD Pipeline / Canary Release to Production (pull_request) Has been cancelled
CI/CD Pipeline / CI Gate (pull_request) Successful in 10s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Successful in 13s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 21s
CI/CD Pipeline / Production Browser E2E (pull_request) Failing after 1166h9m39s
CI/CD Pipeline / Deploy Production (pull_request) Failing after 1166h14m6s
CI/CD Pipeline / Build Production Worker Image (pull_request) Failing after 1166h18m6s
CI/CD Pipeline / Build Production Web Image (pull_request) Failing after 1166h18m6s
CI/CD Pipeline / Build Production API Image (pull_request) Failing after 1166h18m8s
CI/CD Pipeline / Integration Tests (pull_request) Failing after 1166h18m10s
CI/CD Pipeline / ACR Image Cleanup (pull_request) Failing after 1166h18m19s
CI/CD Pipeline / Staging API Integration Tests (pull_request) Failing after 1166h18m21s
CI/CD Pipeline / Staging E2E Tests (pull_request) Failing after 1166h18m23s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Failing after 1166h22m1s
CI/CD Pipeline / Unit Tests (pull_request) Failing after 1166h22m26s
CI/CD Pipeline / PR Build Worker Image (pull_request) Failing after 1166h22m3s
CI/CD Pipeline / Build Staging Worker Image (pull_request) Failing after 1166h25m36s
CI/CD Pipeline / Build Staging Web Image (pull_request) Failing after 1166h25m38s
CI/CD Pipeline / Build Staging API Image (pull_request) Failing after 1166h25m40s
CI/CD Pipeline / PR Build API Image (pull_request) Failing after 1166h55m28s
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
import { useMemo } from "react"
|
||||
import { useQuery } from "@tanstack/react-query"
|
||||
import { getProducts, type ProductItem as ApiProductItem } from "@/api/products"
|
||||
import { mapApiProduct } from "../../utils"
|
||||
@@ -21,13 +22,15 @@ export const useProductList = () => {
|
||||
})
|
||||
|
||||
// 映射为前端类型,按创建时间倒序排列,防御非数组返回
|
||||
const products = (Array.isArray(apiProducts) ? apiProducts : [])
|
||||
.map(mapApiProduct)
|
||||
.sort((a, b) => {
|
||||
if (!a.date || a.date === "—") return 1
|
||||
if (!b.date || b.date === "—") return -1
|
||||
return new Date(b.date).getTime() - new Date(a.date).getTime()
|
||||
})
|
||||
const products = useMemo(
|
||||
() =>
|
||||
(Array.isArray(apiProducts) ? apiProducts : []).map(mapApiProduct).sort((a, b) => {
|
||||
if (!a.date || a.date === "—") return 1
|
||||
if (!b.date || b.date === "—") return -1
|
||||
return new Date(b.date).getTime() - new Date(a.date).getTime()
|
||||
}),
|
||||
[apiProducts],
|
||||
)
|
||||
|
||||
/* 筛选 */
|
||||
const {
|
||||
|
||||
Reference in New Issue
Block a user