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 也会中断
相关推荐
摇滚侠4 小时前
SpringBoot3+Vue3 全套视频教程 45-51
前端·javascript·vue.js
星河耀银海5 小时前
框架结合:Vue+HTML5+AI实现智能前端应用开发
前端·vue.js·html5
英勇无比的消炎药6 小时前
还在手写对话面板?TinyRobot Container 一个组件装下整个 AI 聊天
vue.js
不甘平凡的小鸟7 小时前
Element-UI记录
javascript·vue.js·ui·elementui
用户2930750976697 小时前
流式输出:Vue 3 + DeepSeek API 实战
vue.js
先吃饱再说7 小时前
流式输出完全指南:让 AI 对话像打字机一样流畅
javascript·vue.js
OpenTiny社区8 小时前
TinyEngine 2.11 重磅更新!AI 深度嵌入画布,Vue 项目一键转换成 DSL
前端·vue.js·人工智能·ai编程·opentiny·tinyengine
小小编程路11 小时前
C++ 块作用域详解:从基础到实战
前端·javascript·vue.js
虚惊一场11 小时前
MarkView:纯前端 Markdown 实时预览工具的架构设计
前端·javascript·vue.js
早期的虫儿有鸟吃12 小时前
Vue3
前端·javascript·vue.js