方法一、在生命周期函数beforeDestroy中清除

data() {return {timer: null;};
},
created() {    // 设置定时器,5s执行一次this.timer = setInterval(() => {console.log('setInterval');}, 5000);
}
beforeDestroy () {//清除定时器clearInterval(this.timer);this.timer = null;
}

方法二、使用hook:beforedestroy(推荐)

created() {    // 设置定时器,5s执行一次let timer = setInterval(() => {console.log('setInterval');}, 5000);// 离开当前页面时销毁定时器this.$once('hook:beforeDestroy', () => {clearInterval(timer);timer = null;})
}

该方法与在生命周期钩子beforeDestroy中清除定时器的操作原理一样,但更有优势

1.无需在vue实例上定义定时器,减少不必要的内存浪费

2.设置和清除定时器的代码放在一块,可读性维护性更好

三、beforeDestroy函数没有触发的情况

1、原因

<router-view>外层包裹了一层<keep-alive>

< keep-alive > 有缓存的作用,可以使被包裹的组件状态维持不变,当路由被 keep-alive 缓存时不走 beforeDestroy 生命周期。被包含在 < keep-alive > 中创建的组件,会多出两个生命周期钩子: activated 与 deactivated。

activated
在组件被激活时调用,在组件第一次渲染时也会被调用,之后每次keep-alive激活时被调用。

deactivated
在组件失活时调用。

2、解决方案

借助 activated 和 deactivated 钩子来设置和清除定时器

(1)生命周期钩子

created() {// 页面激活时设置定时器this.$on("hook:activated", () => {let timer = setInterval(()=>{console.log("setInterval");},1000)})// 页面失活时清除定时器this.$on("hook:deactivated", ()=>{clearInterval(timer);timer = null;})}

(2)hook

data() {return {timer: null // 定时器}
},
activated() {// 页面激活时开启定时器this.timer = setInterval(() => {console.log('setInterval');}, 5000)
},
deactivated() {// 页面关闭(路由跳转)时清除定时器clearInterval(this.timer)this.timer = null
},

VUE设置和清除定时器相关推荐

  1. vue中如何设置和清除定时器setInterval

    data中生明定时器 方法里使用和清除定时器

  2. 关于vue中如何清除定时器的方法

    一.问题 1.在vue中使用setTimeout定时器的时候,可能会遇到关不掉的情况,会存在明明已经在beforeDestroy和destroyed中设置了定时器清除了,但是有时候没生效,定时器还会继 ...

  3. vue中clearInterval()清除定时器报timeout.close is not a function错误?

    在vue中实现播放音乐时旋转光碟的功能时候使用到了定时器,在暂停播放音乐的时候清除定时器,但是发现报了一个奇怪的错误: 在网上查了一下,发现报错的原因好像是vue中有自己内置的clearInterva ...

  4. vue项目中清除定时器(清除定时器不成功)

    首先确认< router-view >外层是否有包裹了一层< keep-alive > 如果有包裹: <template><div><keep-a ...

  5. vue beforeDestroy clearInterval清除定时器失效

    我发现遇到这个问题的人挺多的,自己遇到过,改别人代码的时候也遇到过,赶紧记下来~这方法好使~ 情景:路由跳转时触发了beforeDestroy,里面也写了清除计时器的相关代码,但是到其他页面时还是在一 ...

  6. vue优雅的清除定时器

    今日跟朋友交流,偶然间被问到这个问题:"在vue的生命周期中定义一个定时器,如何在destoryed钩子中不手动卸载的操作下,自动卸载定时器" 引发了一些思考,也总结出一些之前未接 ...

  7. vue设置定时器、清除定时器

    1.一次性定时器setTimeout let timer = setTimeout(() => {//需要定时执行的代码console.debug("Hello World" ...

  8. 清除定时器 和 vue 中遇到的定时器setTimeout setInterval问题

    2019-03更新 找到了更简单的方法,以setinterval为例,各位自行参考 mounted() {const that = thisconst timer = setInterval(func ...

  9. JS 设置定时器和清除定时器

    在做项目中难免会碰到需要实时刷新,动画依次出现等等需求,这时候就需要定时器登上我们的代码舞台了,所以今天我们就先来了解一下JS定时器的设置和清除吧. 一.启用定时器 window对象提供了两个方法来实 ...

最新文章

  1. Spring MVC常用注解说明
  2. TOMCAT学习笔记
  3. Linux内核系统时钟管理 感想总结 (未完待续)
  4. Hibernate 查询数据库中的数据
  5. java 大数类_Java大数类介绍
  6. linux中的medium_如何在freeCodeCamp Medium出版物中发布
  7. Windows学习总结(23)——在 Windows 10 子系统 ubuntu 上利用 WSL2 安装 docker 的 2 种方式
  8. jQuery学习笔记04
  9. mongodb sharding maintenance (分片维护1)
  10. BAT专家详解勒索病毒冲击波:勒索物联网时代的开端
  11. 无人驾驶路径规划(一)全局路径规划 - RRT算法原理及实现
  12. firefox火狐集成idm
  13. HTML基础学习(菜鸟教程和W3school参考手册)
  14. phpstudy+TP5隐藏入口文件
  15. ajax json destoon,destoon框架中的微信自动登陆
  16. 交换机端口mtu值最大_-【SDN】交换机MTU配置总结
  17. 想晋升Android架构师——学习这些核心技术够用吗?
  18. vue具名插槽的使用
  19. 二叉树的递归遍历及非递归遍历
  20. 帮助Java程序员度过中年危机的2个能力,你了解吗?

热门文章

  1. 用html+js实现iPhone A13芯片动画特效【这个真的帅】
  2. 阿里巴巴编码规范解读(六、七)-工程结构及设计规约
  3. 洛谷P2181答案C语言,洛谷P2181 对角线(组合数)
  4. java case 枚举_Java switch 枚举
  5. 「首席架构师推荐」精选数据挖掘和机器学习软件列表
  6. 迭代和递归的应用例子c语言,递归和迭代的应用以及区别
  7. android 仿微信头像裁剪,Android仿微信QQ设置图形头像裁剪功能
  8. 管理文件,按文件扩展名归类分类保存
  9. Java基础系列五 面向对象程序设计
  10. 铁道警察学院 计算机,铁警emoji,看看你的校园生活