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 也会中断
相关推荐
无羡仙11 小时前
从零构建 Vue 弹窗组件
前端·vue.js
计算机毕设VX:Fegn089514 小时前
计算机毕业设计|基于springboot + vue动物园管理系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
北辰alk14 小时前
深入理解Vue数据流:单向与双向的哲学博弈
vue.js
北辰alk15 小时前
解决Vue打包后静态资源图片失效的终极指南
vue.js
Jing_Rainbow17 小时前
【Vue-2/Lesson62(2025-12-10)】模块化与 Node.js HTTP 服务器开发详解🧩
前端·vue.js·node.js
冴羽18 小时前
2026 年 Web 前端开发的 8 个趋势!
前端·javascript·vue.js
五仁火烧18 小时前
Vue3 项目的默认端口行为
服务器·vue.js·nginx·容器·vue
Younglina19 小时前
一个纯前端的网站集合管理工具
前端·vue.js·chrome
pas13620 小时前
31-mini-vue 更新element的children
前端·javascript·vue.js
计算机程序设计小李同学21 小时前
婚纱摄影集成管理系统小程序
java·vue.js·spring boot·后端·微信小程序·小程序