一、情景说明
在上一篇中,我们知道
被keep-alive
缓存的组件,它的beforeDestroy
不会被执行。
那么,如何弥补这个不足了?
这里,就要学习到两个新的生命周期方法
activated
:路由组件激活(切换到该组件时)时触发
deactivated
:路由组件失活(切换走该组件时)时触发
二、案例
接上篇案例
我们对News
组件进行缓存处理
我们在mounted()
中创建一个定时器,beforeDestroy()
方法中销毁定时器
由于,News
组件被缓存处理,所以,导致beforeDestroy()
方法不执行,导致定时器无法销毁
解决:
activated
方法中,创建定时器
activated() {console.log('News组件被激活了');this.timer = setInterval(() => {console.log('@');this.opacity -= 0.01;if(this.opacity <= 0) this.opacity = 1;},16);},
deactivated
方法中销毁定时器
deactivated() {console.log('News组件失活了');//清除定时器clearInterval(this.timer);},