Skip to content

主题与 Tabs ​

主题(明暗、跟随系统、颜色、布局)由壳 UI 提供;不要在 selrux.config.ts 寻找 theme / tabs 字段。

Tabs 支持切换、关闭、固定、刷新;持久化页签元数据不等于组件保活。当前无 KeepAlive。

页签身份默认是 pathname(例如 /users/42),列表筛选写在 search 中时不新开页签,但会更新该页签的 fullPath,切回时可还原。multiTab 需配合 tabIdentityQueryKeys 才把指定 query 打进页签 id;未声明键时行为与默认相同。

KeepAlive(可选) ​

路由 meta keepAlive: true 时,内容区按页签 id 缓存组件,默认上限 8(LRU)。默认关闭(未设置 keepAlive 的页不入池)。

事件行为
激活 / 停用槽显示或隐藏;useShellKeepAliveActive / useShellKeepAliveEffect 可暂停订阅
刷新仅重建当前 pathname 槽,其它缓存保留
关闭页签evictShellKeepAlive
权限收紧 / 退出clearShellKeepAlive

缓存页请用 useShellCachedParams / useShellFrozenRoute 读参数;不要依赖 TanStack useParams 在隐藏槽内仍正确。隐藏不等于卸载。

离开确认 ​

编辑页等可调用 useShellTabDirty(true) 标记当前页签。关闭页签、批量关闭、站内跳到其它 pathname 时会弹一次确认;取消则保留页签与页面。enableShellTabLeaveGuard(registerNavigateExtension) 注册站内离开拦截。显式退出会抑制确认并清空脏标记。浏览器刷新/关页仅依赖原生 beforeunload,不承诺自定义文案。

动态标题 ​

详情页等需要按实例改标题时,使用 useShellTabTitle / useShellTabTitleAsync(或 setShellTabTitle),按页签 id 隔离。离开或卸载后回退为路由静态 title。异步请求必须以 AbortSignal 或页签存在性校验丢弃旧结果,避免 /users/1 的迟到响应覆盖 /users/2。

菜单高亮与 Tabs 共用同一份路由元数据:hideInMenu + activeMenu 可让详情高亮列表菜单。见 菜单与图标 与 @selrux/shell/config。

主题抽屉与搜索首次打开时懒加载。

精简版默认可用;完整壳需显式启用并配置私服。