Vue2 去除定时器之常用三种方式及特殊方式
1.Vue跨域详解2.Vue 打包后报 Uncaught SyntaxError: Unexpected token ‘<‘3.TypeError: Cannot read property 'upgrade' of undefined4.Vue选日期滚动条自动定位到选定的日期位置5.Vue根据时间戳制作倒计时15分钟6.防抖节流utils7.一些JS过滤方法8.Vue全局公共服务类mixin9.npm install报错node-sass@7.0.1 postinstall: `node scripts/build.js`10.vue一直处在2.9.6版本卸载不了升级不了解决方案11.Vue 全局避免按钮重复点击
12.Vue2 去除定时器之常用三种方式及特殊方式
13.Vue Element-ui 之 el-table自动滚动14.el-table自适应列宽15.vue工程内下载路由16.40% building 31/38 modules 7 active ...es\core-js\modules\es6.object.assign.jsBrowserslist: caniuse-lite is outdated.17.Vue监听系统是否为暗黑模式一般情况去除定时器的常用的三种方式方法:创建一下三种钩子函数,一般有其中一个就足以实现清除定时器的效果beforeDestroy(){
beforeDestroy(){
// 离开当前路由前的操作 clearInterval(timer) timer = null } destroyed(){ // 离开当前路由后的操作 clearInterval(timer) timer = null } this.$once('hook:beforeDestroy', () => {
// $once一次性监听事件,触发后即关闭
// hook 自定义钩子函数
clearInterval(timer) timer = null })
建议大家常用this.$once('hook:钩子函数, ()=> {})
其本质上是执行this.$emit()并返回一个callBack()
直接用在创建实例处,也可以用于自定义组件上
如:
<Test @hook:mounted="loading = false" @hook:beforeUpdated="loading = true" @hook:updated="loading = false" :data="data" />
或:
mounted() {
const timer = setInterval(() => { ... }, 1000);
this.$once('hook:beforeDestroy', () => clearInterval(timer);)
}
特殊情况时以上均失效不可用时,我这里采用监听路由变化进而清除定时器
watch: { //监听路由 $route:{ handler(oldVal,newVal){
// 此处判断当前页面路由是否为指定路由,是则创建定时器,否则清除定时器,用在单页面 if (oldVal.path != '/xx/xx/xx') { clearInterval(this.timer) this.timer = null } else { this.Init(); this.timer = setInterval(() => { this.Init(); }, 1000 * 30) } }, deep:true, // 深度监听 immediate: true // 使监听在页面加载完成后执行,避免数据无变化或初进页面时监听不执行
} },
第二种方式还可以使用deactiveted 函数进行清除
vue项目中,正常情况下,我们在生命周期 destroyed 中关闭即可,一旦页面中使用了keep-alive 进行缓存,此时 destroyed 会失效。需要在 deactivated 钩子函数去关闭,他是 keep-alive 特有的钩子函数。
// 开启定时器 activated(){ this.start() }, // 关闭定时器 deactivated(){ clearInterval(this.timer) }
如有不全或错误之处,欢迎指出
本文来自博客园,作者:甲辰哥来帮你算命,转载请注明原文链接:https://www.cnblogs.com/linboomboom/p/16276188.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
2021-05-16 CSS动画