vue 组件清除定时器的问题

2023-11-12

我在a页面写一个定时,让他每秒钟打印一个1,然后跳转到b页面,此时可以看到,定时器依然在执行。这样是非常消耗性能的。如下图所示:

解决方法1:

首先我在data函数里面进行定义定时器名称:

data() {            
    return {                              
        timer: null  // 定时器名称          
    }        
},

然后这样使用定时器:

this.timer = (() => {
    // 某些操作
}, 1000)

最后在beforeDestroy()生命周期内清除定时器:

beforeDestroy() {
    clearInterval(this.timer);        
    this.timer = null;
}

方案1有两点不好的地方,引用尤大的话来说就是:

  • 它需要在这个组件实例中保存这个 timer,如果可以的话最好只有生命周期钩子可以访问到它。这并不算严重的问题,但是它可以被视为杂物。
  • 我们的建立代码独立于我们的清理代码,这使得我们比较难于程序化的清理我们建立的所有东西。

解决方案2:

该方法是通过$once这个事件侦听器器在定义完定时器之后的位置来清除定时器。以下是完整代码:

const timer = setInterval(() =>{                    

    // 某些定时器操作                
}, 500);            
// 通过$once来监听定时器,在beforeDestroy钩子可以被清除。
this.$once('hook:beforeDestroy', () => {            
    clearInterval(timer);                                    
})

方案2要感谢@zzx18023在评论区提供出的解决方案。类似于其他需要在当前页面使用,离开需要销毁的组件(例如一些第三方库的picker组件等等),都可以使用此方式来解决离开后以后在背后运行的问题。

综合来说,我们更推荐使用方案2,使得代码可读性更强,一目了然。如果不清楚$once、$on、$off的使用,这里送上官网的地址教程,在程序化的事件侦听器那里

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vue 组件清除定时器的问题 的相关文章

  • vue中使用Echarts地理地图并结合高德地图实现一个国、省、市、区的地图下钻功能

    vue中使用Echarts地理地图并结合高德地图实现一个国 省 市 区的地图下钻功能 一 需求 按不同的层级展示不同的内容 1 中国地图 2 省级地图 3 市级地图 4 县和区以下的地图 二 开发 1 Echarts和地图容器的设置 相关代
  • vue3 vue-router 钩子函数

    全局路由守卫 vue router4 0中将next取消了 可写可不写 return false取消导航 undefined或者是return true验证导航通过 router beforeEach to from gt next是可选参
  • Vue如何将数据显示在页面中

    如何将data的数据显示在页面中 1 文本插值 div msg div 渲染结果 div hello world div 2 原始HTML插值 v html v text 区别 v text不会对标签进行转义而v html会对标签进行一次转
  • Vue学习(五)登陆页面之重置和发起登陆请求及弹窗提示

    Vue学习 五 登陆页面之重置和发起登陆请求及弹窗提示 表单重置 根据预验证结果决定是否发出登陆请求 编写代码 启动api服务器 弹窗提示 表单重置 直接调用element ui给我们写好的函数就可以了 获取当前表单的实例对象 通过这个实例
  • vue3使用import.meta.env在vite.config.ts下使用env环境变量的方法

    vue3使用import meta env在vite config ts下使用env环境变量的方法 编程一枚的博客 CSDN博客
  • Vue + Element UI 前端篇(十一):第三方图标库

    Vue Element UI 实现权限管理系统 前端篇 十一 第三方图标库 使用第三方图标库 用过Elment的同鞋都知道 Element UI提供的字体图符少之又少 实在是不够用啊 幸好现在有不少丰富的第三方图标库可用 引入也不会很麻烦
  • 前端大屏常用的适配方案

    假设我们正在开发一个可视化拖拽的搭建平台 可以拖拽生成工作台或可视化大屏 或者直接就是开发一个大屏 首先必须要考虑的一个问题就是页面如何适应屏幕 因为我们在搭建或开发时一般都会基于一个固定的宽高 但是实际的屏幕可能大小不一 接下来我们就尝试
  • vue prop属性使用方法小结

    Prop 一 基本用法 Prop的基本用法很简单 作用是在子组件中接收父组件的值 父组件传值
  • vue实现拍照人脸识别功能带人脸选中框

    前言 实现打开摄像头 并识别人脸 实现效果 实现步骤 一 安装 1 官网下载 tracking js 的代码包官网入口 2 npm下载 执行命令 cnpm install tracking save 二 demo案例代码
  • vue项目使用视频播放器vue-video-player

    安装使用 插件有版本限制 如果项目使用的是vue2 0版本 请选择安装 4 x版本 否则会安装不成功 yarn add vue video palyer save 或者 npm install vue video palyer save 组
  • 前端的工程化、模块化和组件化

    什么是工程化 工程化是一种思想而不是某种特定的技术 当然我们在实现项目工程化的过程中 我们也会去使用一些技术 前端工程化是使用软件工程的技术和方法来对前端的开发流程 技术 工具等进行规范化 标准化 其主要目的为了提高效率和降低成本 即提高开
  • 【vue3】elementplus日期组件英文转中文

    vue3 elementplus日期组件英文转中文 1 在main js或者main ts中加入 即可解决 import ElementPlus from element plus import element plus dist inde
  • 快速入手 vue3 defindeModel 双向绑定数据,赶快了解下

    彩蛋 在vue3 3x 版本中 官方 RFC 放出了 一个新特性 defineModel 它将让我们在自定义组件上双向绑定数据更加快捷 举个 以前我们父子组件双向数据绑定要在子组件里声明对应的props emts computed 子组件
  • 黑豹程序员-自定义表单实现门户自定制

    功能 用户可以实现欢迎页面自己定制 数据由数据库表进行维护 原理 页面利用div进行布局 拖动div记录其坐标 并写库 页面加载时从数据库表中读取div坐标和数据即可 效果图
  • Vue学习之watch侦听器:案例实现翻译功能

    watch侦听器 作用 监视数据的变化 当数据发生变化时 执行一些业务逻辑或者是异步操作 执行的场景例如在线翻译 当文本区域的内容发生变化时 会发生翻译内容的同时更新 语法 简单的写法 简单数据类型 可以直接的进行监听 完整的写法 添加额外
  • 基于vue2+海康威视web开发包3.2 无插件版本开发的监控系统

    文章目录 前言 一 插件准备 二 使用步骤 前言 项目最终效果为 可以预览 并且可以使用云台控制 购买的海康威视摄像头必须可以开启websocket 一 插件准备 插件下载地址 下载WEB无插件开发包V3 2 并加入到vue项目中 下载后解
  • 基于vue2+海康威视web开发包3.2 无插件版本开发的监控系统

    文章目录 前言 一 插件准备 二 使用步骤 前言 项目最终效果为 可以预览 并且可以使用云台控制 购买的海康威视摄像头必须可以开启websocket 一 插件准备 插件下载地址 下载WEB无插件开发包V3 2 并加入到vue项目中 下载后解
  • 【vue】$bus 跨组件调用方法

    1 新建bus js import Vue from vue 使用 Event Bus const bus new Vue export default bus 2 main js引用 import bus from libs bus Vu
  • vue项目日期处理day.js

    dayjs安装 1 npm 安装 npm install dayjs save 2 项目使用 import dayjs from dayjs ES 2015 dayjs format 使用介绍 1 秒 获取或设置秒 接受0到59的数字 如果
  • 黑豹程序员-字符串中查找出重复的字符串

    Collections frequency codeList element 字符串element 在codeList集合中重复的次数 List

随机推荐

  • mysql 显示所有用户_mysql查看全部用户

    mysql查看所有用户 声明 以下内容是读MySQL The Complete Reference的笔记 1 创建数据库 create database db1 2 为防止重复 create database if not exists d
  • UltraEdit 换行替换

    需求 想在每行结尾添加 方案 在查找栏填写 r n 替换栏 r n 效果 转载于 https www cnblogs com qianyuliang p 7793007 html
  • torch、torch.nn、 torch.optim、torchvision、 torchvision.transforms 功能简介

    1 torch 库 import torch 命令将 PyTorch 框架导入到 Python 程序中 这样我们就可以使用 PyTorch 提供的各种功能了 PyTorch 是一个用于科学计算的机器学习库 具有以下重要功能 张量 Tenso
  • 发布一个在读写sd卡时,此时sd卡拔出造成死机的处理方法

    发布一个在读写sd卡时 此时sd卡拔出造成死机的处理方法 同时也在此记录一下 以备后用及有需要人们参考 stm32f4xx hal sd c 红色的代码是增加上去的 函数名称 static HAL SD ErrorTypedef SD Cm
  • TenserRT(七): TensorRT Python实战

    1 生成ONNX import torch import UNetTrainer dev nb 0 model file r xxx model trainer UNetTrainer dev nb dim 2 trainer load m
  • vue路由 & nodeJS环境搭建

    目录 一 路由 1 SPA是什么 优势 2 SPA实现思路和技术点 路由步骤 1 引入Vue vue router的js依赖 2 定义组件 就是展示不同的页面效果 3 定义路由与组件的对应关系 4 生成路由对象 5 将Vue对象挂载到Vue
  • Python文件读写和函数编程

    文件读写 在Python中 文件的操作应用非常多 比如大数据领域 涉及许多数据处理请求 基本上都是从一个文件对数据进行分析 抽取 重写进行梳理数据 文件的读写分几步 如何把大象放冰箱 下面我们来拆分下 打开文件 python中打开文件使用o
  • 生成进度条(动态生成文件,并前端显示生成进度)

    注 1 本文是以生成txt文件为例子 2 写的主要是一个思路 不一点非要是生成txt 可以是其他类型文件 3 本文例子的项目地址 https github com smallsnail wh wh 思路 在前端显示 需要拿到生成的进度 百分
  • 正向代理与方向代理的区别

    之前工作用到了nginx 很好理解反正代理 但是正向代理一直困扰这我 今天终于拨开乌云见晴天 正向代理 代理的是客户端 比如 我不能访问公司的内网 然后使用了vpn登录到跳板机 最后成功访问了就是正向代理 反向代理 代理的是服务端 比如 我
  • 模块独立性的度量(耦合度和内聚度)

    模块独立性的度量 从两个方面来度量模块之间的独立性 这两个概念是模块的耦合度和模块的内聚度 耦合度 耦合度分为 独立耦合 数据耦合 控制耦合 公共耦合 和 内容耦合 独立耦合 指两个模块之间彼此完全独立 没有直接联系 他们之间的联系仅仅在于
  • pandas中pd.read_excel()的用法

    人们经常用pandas处理表格型数据 时常需要读入excel表格数据 很多人一般都是直接这么用 pd read excel 文件路径文件名 再多一点的设置可能是转义一下路径中的斜杠 一旦原始的excel表不是很规整 这样简单读入势必报错 其
  • Ain_电脑所有乱码文字集

    以下是所有电脑上可显示的汉字 谁要是用哪个又通过输入法输不出来 可以从这里找 很简单 就是把int的 19968 至 40869 的数字按字符输出即可 19968 一丁丂七丄丅丆万丈三上下丌不与丏丐丑丒专且丕世丗丘丙业丛东丝丞丟 20000
  • Spring IOC 容器详解

    目录 1 容器的概念 2 如何配置元数据 3 如何实例化一个容器 4 使用容器 1 容器的概念 ApplicationContext 代表 Spring IoC 容器 它负责 Spring Beans 的实例化 配置和组装 容器通过读取配置
  • 查看显卡型号命令

    nvidia smi L 结果
  • 自然语言处理中的Character Embedding技术

    在2013年的时候 Tomas Mikolov提出了word embedding技术来更好的表示一个单词的向量 也就是word2vec 在当时也获得了语法和语义相似度上最好的结果 之后关于doc2vec也被提出来 由此word和doc都有了
  • python 爬虫起步 图片

    import urllib request import gevent from gevent import monkey monkey patch all def download img name img url ret urllib
  • c++ 类

    设计一个Per类 类中包含私有成员 姓名 年龄 指针成员身高 体重 再设计一个Stu类 类中包含私有成员 成绩 Per类对象 p1 设计这两个类的构造函数 析构函数和拷贝构造函数 include
  • 水平分割和毒性逆转的作用

    水平分割和毒性逆转主要是针对动态路由协议RIP中 避免路由环路 提高收敛速度产生的 水平分割产生原因 产生环路的一种情况是 路由器A将从路由器B学习到的路由信息又告诉给了路由器B 最终 路由器B认为通过路由器A能够到达目标网络 路由器A认为
  • 「自控元件及线路」1.1 直流电动机概述

    本节介绍直流电动机的工作原理和基本结构 本节介绍电枢绕组的环形 鼓形结构 波绕组和叠绕组 本节介绍直流电机的换向 文章目录 电机概述 直流电机工作原理 直流电机的额定值 直流电机的基本结构 主磁极 电枢绕组 电枢绕组的绕法 环形绕组 鼓形绕
  • vue 组件清除定时器的问题

    我在a页面写一个定时 让他每秒钟打印一个1 然后跳转到b页面 此时可以看到 定时器依然在执行 这样是非常消耗性能的 如下图所示 解决方法1 首先我在data函数里面进行定义定时器名称 data return timer null 定时器名称