Files
wx_pbzc/.workbuddy/memory/2026-08-14.md
T
lc aa905b1d09 fix(tabBar): 切换暗黑模式后其他 tab 的底栏不跟随变暗
根因:自定义 tabBar 的 pageLifetimes.show() 不触发(微信框架
特殊行为),各 tab 页 onShow 只设了 selected 没同步主题;
onSelectDarkMode 里 getCurrentPages() 只返回当前 tab 页,
其他 tab 的 tabBar 实例未收到更新。

修复:4 个 tab 页 onShow 里 tb.setData({selected:X}) 后加
tb.updateTheme(),显式同步主题。updateTheme 内部有样式未变
则跳过的优化,不会多余渲染。
2026-08-14 08:45:19 +08:00

1.2 KiB
Raw Blame History

2026-08-14 工作日志

修复:设置页切换暗黑模式后其他 tab 的 tabBar 不跟随变暗

  • 现象:设置页选暗黑模式后,只有设置 tab 的底栏变暗,切到训练/记录/排行 tab 底栏仍是白色,完全退出重进才正常。
  • 根因:自定义 tabBar 组件的 pageLifetimes.show() 对自定义 tabBar 不触发(微信框架特殊行为——自定义 tabBar 由框架管理,不走普通组件的页面生命周期)。各 tab 页 onShow 里只做了 tb.setData({selected:X}) 设高亮,没有同步主题;onSelectDarkModegetCurrentPages() 只返回当前 tab 页(其他 tab 不在页面栈里),所以 tb.updateTheme() 只刷新了设置页的 tabBar 实例。
  • 修复4 个 tab 页 onShow 里获取 tabBar 后,在 setData({selected:X}) 之后加一行 tb.updateTheme()updateTheme() 内部调 applyThemeToPage(this)(有"样式未变则跳过"的优化),不会产生多余渲染。涉及 pages/index/index.jspages/records/records.jspages/leaderboard/leaderboard.jspages/settings/settings.js
  • 教训:自定义 tabBar 不能依赖 pageLifetimes 做状态同步,必须在各 tab 页 onShow 里显式调 this.getTabBar() 更新。