生命周期、keep-alive、路由复用怎么配合
先理解原理和示例,再练习完整口述与追问。
回答要点
讲清创建、挂载、更新和销毁阶段各适合做什么。keep-alive 还要处理 activated / deactivated;路由参数改变可能复用实例,不会按预想重新 mounted。按业务选择参数监听或路由更新守卫,并清理资源。
原理拆解
keep-alive 缓存组件实例,使切走的组件失活而非按普通路径销毁,便于保留表单和滚动等局部状态。activated/deactivated 表达进入和离开缓存可见状态,可用于恢复或暂停轮询。include/exclude 匹配组件名等规则,max 限制缓存规模;缓存身份还与 vnode 的 key 等因素有关。
示例与推演
列表进入详情再返回时,可以保留筛选、页码与滚动;但若在详情修改了记录,应通过明确的失效标记或回到列表时的校验决定重查。只在 created 请求的缓存页返回时未必重新执行 created;可在 activated 中按业务条件刷新,避免每次激活无条件重复请求。
易错点
deactivated 不等于销毁,window 监听和定时器不会自动全部消失。不要无限缓存带大量数据或用户敏感状态的页面,退出登录应清掉相关缓存。
参考回答可直接练习口述
我把普通生命周期、缓存激活和路由参数变化分开。created 初始化数据相关逻辑,mounted 做客户端 DOM 操作,销毁前清理;keep-alive 页面返回时主要是 activated,不一定重新 mounted。动态参数切换也可能复用同一实例,所以监听具体参数或用更新守卫取新数据。是否在返回时刷新取决于过期策略和业务失效标记,不能同时在多个钩子无条件请求造成重复。