vue3 【实战】封装 “心跳“ 组件

需求描述

在控制台每秒打印一个"hello"

代码实现

html 复制代码
<script setup>
import { onMounted, onBeforeUnmount, ref } from "vue";

const timer = ref(0);

onMounted(() => {
  function fn() {
    console.log("hello");
    timer.value = setTimeout(fn, 1000);
  }

  timer.value = setTimeout(fn, 1000);
});

onBeforeUnmount(() => {
  clearTimeout(timer.value);
});
</script>

<template>
  <div>心跳</div>
</template>

技术要点

  • 卸载组件时,一定要记得清除定时器、自定义事件、DOM事件,避免内存泄漏/其他业务干扰
  • 本例中使用 setTimeout 递归比 setInterval 更好,因为若页面出现卡顿,setInterval 也会中断
相关推荐
A-程序设计5 分钟前
基于Spring Boot+Vue的生活用品购物平台设计与实现-(源码+LW+可部署)
vue.js·spring boot·后端
程序员小寒44 分钟前
Vue.js 为什么要推出 Vapor Mode?
前端·javascript·vue.js
前端老曹1 小时前
Jspreadsheet CE V5 使用手册(保姆版) 二
开发语言·前端·vue.js·学习
老华带你飞1 小时前
动物救助|流浪狗救助|基于Springboot+vue的流浪狗救助平台设计与实现(源码+数据库+文档)
java·数据库·vue.js·spring boot·论文·毕设·流浪动物救助平台
5335ld1 小时前
vue2 直播地址播放 兼容浏览器
前端·vue.js
哆啦A梦15881 小时前
60 订单页选择收货地址
前端·javascript·vue.js·node.js
youyu-youyu2 小时前
h5 签名 vue
javascript·vue.js·ecmascript
梦6502 小时前
VUE树形表格组件如何自定义展开箭头以及箭头位置
javascript·vue.js·elementui
一 乐2 小时前
数码商城系统|电子|基于SprinBoot+vue的数码商城系统(源码+数据库+文档)
java·前端·javascript·数据库·vue.js·springboot
前端_逍遥生3 小时前
Vue 2 vs React 18 深度对比指南
前端·vue.js·react.js