diff --git a/src/views/Community/components/DynamicNewsCard.js b/src/views/Community/components/DynamicNewsCard.js
index d047d40a..5ebdf478 100644
--- a/src/views/Community/components/DynamicNewsCard.js
+++ b/src/views/Community/components/DynamicNewsCard.js
@@ -28,6 +28,8 @@ import {
} from '@chakra-ui/react';
import { TimeIcon } from '@chakra-ui/icons';
import EventScrollList from './DynamicNewsCard/EventScrollList';
+import ModeToggleButtons from './DynamicNewsCard/ModeToggleButtons';
+import PaginationControl from './DynamicNewsCard/PaginationControl';
import DynamicNewsDetailPanel from './DynamicNewsDetail';
import UnifiedSearchBox from './UnifiedSearchBox';
import {
@@ -326,45 +328,79 @@ const DynamicNewsCard = forwardRef(({
{/* 主体内容 */}
- {/* 横向滚动事件列表 - 始终渲染(除非为空) */}
- {currentPageEvents && currentPageEvents.length > 0 ? (
-
- ) : !loading ? (
- /* Empty 状态 - 只在非加载且无数据时显示 */
-
-
- 暂无事件数据
-
-
- ) : (
- /* 首次加载状态 */
-
-
-
- 正在加载最新事件...
-
-
- )}
+ {/* 顶部控制栏:模式切换按钮 + 分页控制器(始终显示) */}
+
+ {/* 左侧:模式切换按钮 */}
+
+
+ {/* 右侧:分页控制器(仅在纵向模式显示) */}
+ {mode === 'vertical' && totalPages > 1 && (
+
+ )}
+
+
+ {/* 横向滚动事件列表 - 根据数据情况渲染 */}
+ {(() => {
+ // 检查对应模式是否有缓存数据(使用 mode 而非 currentMode,避免延迟)
+ const hasCachedData = mode === 'vertical'
+ ? Object.keys(allCachedEventsByPage || {}).length > 0
+ : (allCachedEvents?.length || 0) > 0;
+
+ // 【优化渲染顺序】优先判断 loading,避免闪现空状态
+ // 1. 首次加载(无缓存 + 加载中)→ 显示 loading
+ // 2. 有数据或有缓存 → 显示列表
+ // 3. 无数据且未加载 → 显示空状态
+
+ if (loading) {
+ /* 首次加载状态 - 无缓存数据时显示 loading */
+ return (
+
+
+
+ 正在加载最新事件...
+
+
+ );
+ } else if (currentPageEvents.length > 0 || hasCachedData) {
+ /* 有数据 - 显示列表(可能在后台加载下一页) */
+ return (
+
+ );
+ } else {
+ /* 空状态 - 确实无数据时才显示 */
+ return (
+
+
+ 暂无事件数据
+
+
+ );
+ }
+ })()}
{/* 四排模式详情弹窗 - 未打开时不渲染 */}
diff --git a/src/views/Community/components/DynamicNewsCard/EventScrollList.js b/src/views/Community/components/DynamicNewsCard/EventScrollList.js
index 890a3b62..b305a397 100644
--- a/src/views/Community/components/DynamicNewsCard/EventScrollList.js
+++ b/src/views/Community/components/DynamicNewsCard/EventScrollList.js
@@ -81,21 +81,6 @@ const EventScrollList = ({
return (
- {/* 顶部控制栏:模式切换按钮 + 分页控制器 */}
-
- {/* 左侧:模式切换按钮 */}
-
-
- {/* 右侧:分页控制器(仅在纵向模式显示) */}
- {mode === 'vertical' && totalPages > 1 && (
-
- )}
-
-
{/* 横向滚动区域 */}