使用了 keep-alive, 离开A页面时,因为组件没被销毁,被缓存起来了,所以不会调用 beforeDestroy 和 destroyed 钩子。
在 keep-alive 中创建的组件,会多出两个生命周期的钩子: activated 与 deactivated:
activated:在 keep-alive 组件激活时调用
deactivated:在 keep-alive 组件停用时调用
当首次进入组件时:
- beforeRouteEnter > beforeCreate > created > mounted > activated > ... ... > beforeRouteLeave > deactivated
再次进入组件时:
- beforeRouteEnter > activated > ... ... > beforeRouteLeave > deactivated
所以可以通过组件内导航守卫结合activated,deactivated来设置添加或取消监听
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…