feat: 优化社区页面滚动和分页交互体验…)

⎿  [feature_2025/1028_event 5dedbb3] feat: 优化社区页面滚动和分页交互体验
      6 files changed, 1355 insertions(+), 49 deletions(-)
      create mode 100644 docs/test-cases/Community351241265351235242346265213350257225347224250344276213.md
This commit is contained in:
zdl
2025-11-03 14:24:41 +08:00
parent e31e4118a0
commit d027071e98
5 changed files with 108 additions and 49 deletions

View File

@@ -72,8 +72,8 @@ const DynamicNewsCard = forwardRef(({
// 发起 Redux action 获取新页面数据
dispatch(fetchDynamicNews({ page: newPage, per_page: pageSize }));
// 重置选中事件(等新数据加载后自动选中第一个)
setSelectedEvent(null);
// 保持当前选中事件,避免详情面板消失导致页面抖动
// 新数据加载完成后useEffect 会自动选中第一个事件
};
return (
@@ -112,27 +112,8 @@ const DynamicNewsCard = forwardRef(({
{/* 主体内容 */}
<CardBody position="relative">
{/* Loading 状态 */}
{loading && (
<Center py={10}>
<VStack>
<Spinner size="xl" color="blue.500" thickness="4px" />
<Text color="gray.500">正在加载最新事件...</Text>
</VStack>
</Center>
)}
{/* Empty 状态 */}
{!loading && (!events || events.length === 0) && (
<Center py={10}>
<VStack>
<Text fontSize="lg" color="gray.500">暂无事件数据</Text>
</VStack>
</Center>
)}
{/* 横向滚动事件列表 */}
{!loading && events && events.length > 0 && (
{/* 横向滚动事件列表 - 始终渲染(除非为空) */}
{events && events.length > 0 ? (
<EventScrollList
events={events}
selectedEvent={selectedEvent}
@@ -141,11 +122,27 @@ const DynamicNewsCard = forwardRef(({
currentPage={currentPage}
totalPages={totalPages}
onPageChange={handlePageChange}
loading={loading}
/>
) : !loading ? (
/* Empty 状态 - 只在非加载且无数据时显示 */
<Center py={10}>
<VStack>
<Text fontSize="lg" color="gray.500">暂无事件数据</Text>
</VStack>
</Center>
) : (
/* 首次加载状态 */
<Center py={10}>
<VStack>
<Spinner size="xl" color="blue.500" thickness="4px" />
<Text color="gray.500">正在加载最新事件...</Text>
</VStack>
</Center>
)}
{/* 详情面板 */}
{!loading && events && events.length > 0 && (
{/* 详情面板 - 始终显示(如果有选中事件) */}
{events && events.length > 0 && selectedEvent && (
<Box mt={6}>
<DynamicNewsDetailPanel event={selectedEvent} />
</Box>