层路由
简介
@esmx/router 中的层路由提供了一种创建隔离路由上下文的机制,该上下文覆盖在主应用之上。层通常用于模态对话框、向导或任何需要自己导航栈同时视觉上覆盖主内容的 UI。
类型定义
RouteLayerOptions
- 类型定义:
层创建的配置选项:
zIndex
- 类型:
number
层的自定义 z-index 值。如未设置,使用基础 z-index(10000)加上自增值。
keepAlive
- 类型:
'exact' | 'include' | RouteVerifyHook - 默认值:
'exact'
控制导航期间层何时保持打开:
'exact':仅当导航到完全相同的初始路径时保持层打开(默认)'include':当导航到以初始路径开头的路径时保持层打开function:自定义逻辑,返回true保持打开,false关闭
autoPush
- 类型:
boolean - 默认值:
true
当层因导航推入而关闭时,是否自动将层的退出路由推入父路由器。
push
- 类型:
boolean - 默认值:
true
是否为层打开记录历史条目。为 true 时,按浏览器后退按钮将关闭层。
routerOptions
- 类型:
RouterLayerOptions
层内部路由器实例的附加路由器选项。与父路由器的配置合并。
RouterLayerOptions
- 类型定义:
层创建的路由器选项。与 RouterOptions 相同,但排除了内部管理的处理函数和 layer 标志。
RouteLayerResult
- 类型定义:
层关闭时返回的结果:
close:层通过router.closeLayer()无数据关闭,或通过后退导航关闭push:层因导航超出层范围而关闭success:层通过router.closeLayer(data)携带数据关闭
方法
router.createLayer()
- 参数:
toInput: RouteLocationInput— 层的目标路由
- 返回值:
Promise<{ promise: Promise<RouteLayerResult>; router: Router }>
创建层路由实例。返回层的路由器和一个在层关闭时解析的 Promise。
router.pushLayer()
- 参数:
toInput: RouteLocationInput— 目标路由位置
- 返回值:
Promise<RouteLayerResult>
创建层并等待其结果的简写方式。以层方式导航到路由。
router.closeLayer()
- 参数:
data?: any— 返回给父级的可选数据
- 返回值:
void
关闭当前层。仅当路由器为层实例时有效(router.isLayer === true)。
层生命周期
- 创建:
createLayer()或pushLayer()以memory模式创建新的 Router 实例 - 挂载:层的根元素以覆盖样式追加到
document.body - 导航:层拥有自己隔离的导航栈
- 关闭:层在以下情况下关闭:
- 调用
closeLayer() - 用户后退且没有更多历史记录
- 导航超出层的
keepAlive范围
- 调用
- 清理:自动调用
destroy(),移除 DOM 元素并清理资源