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 小时前
VUE3中,reactive()和ref()的区别10分钟讲清楚
前端·javascript·vue.js
内存不泄露12 小时前
基于Spring Boot和Vue 3的智能心理健康咨询平台设计与实现
vue.js·spring boot·后端
xkxnq12 小时前
第一阶段:Vue 基础入门(第 11 天)
前端·javascript·vue.js
内存不泄露12 小时前
基于Spring Boot和Vue的在线考试系统设计与实现
vue.js·spring boot·后端
南玖i12 小时前
SuperMap iServer + vue3 实现点聚合 超简单!
javascript·vue.js·elementui
泰勒疯狂展开12 小时前
Vue3研学-标签ref属性与TS接口泛型
前端·javascript·vue.js
忒可君12 小时前
2026新年第一篇:uni-app + AI = 3分钟实现数据大屏
前端·vue.js·uni-app
我不吃饼干12 小时前
手写 Vue 模板编译(生成篇)
前端·vue.js
XTTX1101 天前
Vue3+Cesium教程(36)--动态设置降雨效果
前端·javascript·vue.js
前端小超超1 天前
ionic + vue3 + capacitor遇到backButton问题
前端·javascript·vue.js