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 也会中断
相关推荐
萧曵 丶6 小时前
Vue 中父子组件之间最常用的业务交互场景
javascript·vue.js·交互
Amumu121387 小时前
Vue3扩展(二)
前端·javascript·vue.js
泓博9 小时前
Android中仿照View selector自定义Compose Button
android·vue.js·elementui
+VX:Fegn08959 小时前
计算机毕业设计|基于springboot + vue鲜花商城系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
pas13610 小时前
45-mini-vue 实现代码生成三种联合类型
前端·javascript·vue.js
boooooooom12 小时前
Vue v-for + key 优化封神:吃透就地复用与强制重排,再也不卡帧!
javascript·vue.js·面试
程序猿_极客13 小时前
【2026】分享一套优质的 Php+MySQL的 校园二手交易平台的设计与实现(万字文档+源码+视频讲解)
vue.js·毕业设计·php·mysql数据库·二手交易系统
青屿ovo15 小时前
Vue2跨组件通信方案:全局事件总线与Vuex的灵活结合
前端·vue.js
赵_叶紫16 小时前
使用Cursor 完成 Vike + Vue 3 + Element Plus 管理后台 — 从 0 到 1 (实例与文档)
vue.js
harrain16 小时前
vue全局trycatch
前端·javascript·vue.js·firebug·trycatch