Navigation Lifecycle
在网络应用中导航通过不同视图涉及多个阶段,提供在过渡之前、期间或之后执行操作的机会。导航生命周期提供了一个事件驱动的系统,允许开发者管理导航的关键方面,例如验证数据、控制访问、更新UI和处理清理。
这个灵活的系统允许开发者通过挂钩到导航过程中的关键点来显式管理过渡。无论您需要阻止导航、在组件显示时获取数据,还是管理未保存的更改,您都可以通过其生命周期事件和观察者完全控制导航流。
生命周期事件概述
导航过程受一系列在路由转换期间触发的事件的控制。这些事件允许您在生命周期的特定点做出反应:
- WillEnter:在导航到一个路由之前以及其组件附加到DOM之前触发。非常适合执行身份验证检查或在必要时阻止导航等任务。
- DidEnter:在 导航完成并且组件附加到DOM之后触发。这个事件适合执行获取数据、运行动画或设置UI元素焦点等操作。
- WillLeave:在离开当前路由之前以及其组件从DOM中移除之前触发。它对于管理未保存的数据、提示用户确认或处理清理任务非常有用。
- DidLeave:在切换到不同路由并且组件已从DOM中移除之后触发。这个事件非常适合清理资源或重置未来使用的UI。
- Activate(自
25.03起):在缓存的组件重新激活而不是重新创建时触发。当使用不同参数导航到相同路由或返回到先前访问过的路由时就会发生。该事件会为在当前路径中保持的路由层次结构中所有缓存组件触发,使父布局和子组件都能根据新的参数刷新其数据或更新UI,同时保持组件状态。
这些事件提供了对导航生命周期的细粒度控制,使开发者能够在路由转换期间协调数据验证、UI更新和资源管理。
主题
Lifecycle Observers
Hook into route lifecycle stages by implementing WillEnter, DidEnter, WillLeave, DidLeave, and Activate observer interfaces.
Navigation Blocking
Intercept navigation with WillLeaveObserver veto handlers and the beforeunload event to guard unsaved changes.
Navigation Events
除了组件特定的生命周期事件外,您可以在路由器级别注册 全局事件监听器。这允许在整个应用程序中全局跟踪导航,对于日志记录、分析或其他跨切关注点非常有用。