2.1 KiB
2.1 KiB
平台主 Tab 渲染稳定性修复
日期:2026-04-22
问题现象
平台首页在“首页 / 创作 / 存档 / 我的”之间切换时,页面组件会出现短暂闪烁、错位或像是先渲染上一页元素再变成当前页的感觉。
根因拆解
本次问题集中在表现层:
- 四个主 Tab 共用同一个
content根节点,React 在条件分支切换时会按位置复用上一页 DOM,图片卡片、面板和按钮容易在首帧被改造成新页面结构。 - 移动端和桌面端都共用一个滚动容器,切到新 Tab 时会继承上一页的
scrollTop,用户会先看到错位位置或短暂空白。 - 创作中心等重页面被卸载后再挂载,内部筛选状态、图片加载状态和布局测量会重新跑一遍,来回切换时会放大闪烁。
修复策略
- 主 Tab 内容改为稳定面板栈,四个 Tab 各自拥有独立的内容根节点。
- 非当前 Tab 使用隐藏类保留挂载,不参与布局和交互,避免每次切换销毁再重建页面。
- 每个 Tab 面板自带独立滚动容器,切换时不再继承其他 Tab 的滚动位置。
- 桌面端首页保留控制台化布局,非首页 Tab 继续复用移动端内容结构,但放入桌面独立滚动面板中。
后续约束
- 平台主 Tab 新增页面时,优先加入现有面板栈,不要恢复成单个
content条件分支。 - Tab 切换只做可见性切换,不要默认触发页面级
AnimatePresence进出场。 - 需要展示加载态时,优先在当前 Tab 内部局部展示骨架,不要把整页替换为空白加载页。
- UI 中不增加规则说明类文案,只保留入口、状态和业务信息。
验收要点
- 手机端连续点击四个底部 Tab,不出现上一页元素先闪一下再变成当前页。
- 在首页滚动后切到“我的 / 存档”,新页面不继承首页滚动位置。
- 创作 Tab 来回切换后,创作中心内部筛选和已加载卡片保持稳定。
- 桌面端左侧导航切换时,顶部栏和左侧导航不重挂载,主内容不出现整页淡入闪烁。