From f33489f5d7f53760266bcff61f72c4765fb5e290 Mon Sep 17 00:00:00 2001 From: zdl <3489966805@qq.com> Date: Mon, 17 Nov 2025 16:54:26 +0800 Subject: [PATCH] =?UTF-8?q?pref:=20useMemo=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Community/components/DynamicNewsCard.js | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/src/views/Community/components/DynamicNewsCard.js b/src/views/Community/components/DynamicNewsCard.js index f0eba5ce..3832a143 100644 --- a/src/views/Community/components/DynamicNewsCard.js +++ b/src/views/Community/components/DynamicNewsCard.js @@ -109,10 +109,13 @@ const [currentMode, setCurrentMode] = useState('vertical'); 'fourRowData.total': fourRowData.total, }); - // 根据模式选择数据源 + // 根据模式选择数据源(使用 useMemo 缓存,避免重复计算) // 纵向模式:data 是页码映射 { 1: [...], 2: [...] } // 平铺模式:data 是数组 [...] - const modeData = currentMode === 'four-row' ? fourRowData : verticalData; + const modeData = useMemo( + () => currentMode === 'four-row' ? fourRowData : verticalData, + [currentMode, fourRowData, verticalData] + ); const { data = currentMode === 'vertical' ? {} : [], // 纵向是对象,平铺是数组 loading = false, @@ -123,9 +126,15 @@ const [currentMode, setCurrentMode] = useState('vertical'); cachedPageCount = 0 } = modeData; - // 传递给 usePagination 的数据 - const allCachedEventsByPage = currentMode === 'vertical' ? data : undefined; - const allCachedEvents = currentMode === 'four-row' ? data : undefined; + // 传递给 usePagination 的数据(使用 useMemo 缓存,避免重复计算) + const allCachedEventsByPage = useMemo( + () => currentMode === 'vertical' ? data : undefined, + [currentMode, data] + ); + const allCachedEvents = useMemo( + () => currentMode === 'four-row' ? data : undefined, + [currentMode, data] + ); // 🔍 调试:选择的数据源 console.log('%c[DynamicNewsCard] 选择的数据源', 'color: #3B82F6; font-weight: bold;', {