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 也会中断
相关推荐
布兰妮甜几秒前
Vue 项目 `localhost:3000` 打不开?404 常见原因排查指南
前端·javascript·vue.js·vuecli·4040排查
Hoey2 小时前
虚拟 DOM 和 DIFF 算法
前端·vue.js
小新1102 小时前
vue实战项目 计算器
前端·javascript·vue.js
神仙别闹3 小时前
VUE框架 + Element UI + Node 模拟打印机的 Web 即时打印
前端·vue.js·ui
如果超人不会飞3 小时前
TinyVue图标使用完全指南
vue.js
暗冰ཏོ3 小时前
ECharts 前端图表开发全攻略:参数配置、项目实战与高级可视化资源整理
前端·vue.js·echarts·visual studio code
橘猫走江湖3 小时前
前端项目如何做 vibe coding
javascript·vue.js·架构
励志打工人跑跑3 小时前
JWT 身份验证与授权实战
vue.js
小新1104 小时前
vue架的网站修改端口
前端·javascript·vue.js
暗不需求4 小时前
从零实现一个 Vue Todos 任务清单:深入响应式编程与组合式 API
前端·vue.js·面试