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 也会中断
相关推荐
跟着珅聪学java40 分钟前
Vue 2 + CommonJS 写法开发教程
前端·javascript·vue.js
ByteCraze1 小时前
Vue 递归组件实战:手写一个文件/文件夹树形组件
javascript·vue.js·ecmascript
yangyanping201082 小时前
Vue入门到精通七之关键字const
前端·javascript·vue.js
李剑一2 小时前
Cesium 实现园区水景!3 种水面效果,Water 材质 5 分钟搞定
前端·vue.js·cesium
我命由我123453 小时前
Element Plus - Cascader 观察记录(基本使用、动态加载、动态加载下的异常环境)
开发语言·前端·javascript·vue.js·typescript·html5·js
qq_570398573 小时前
vue总结
前端·javascript·vue.js
踩着两条虫3 小时前
AI 驱动的 Vue3 应用开发平台 深入探究(十二):物料系统之物料模式配置
前端·vue.js·ai编程
踩着两条虫3 小时前
AI 驱动的 Vue3 应用开发平台 深入探究(十三):物料系统之区块与页面模板
前端·vue.js·ai编程
何中应3 小时前
<el-tree>标签使用
前端·vue.js
雪碧聊技术4 小时前
将Tailwind CSS,融入Vue+ElementPlus方案,制作专业级AI应用首页
vue.js·tailwind css·专业ai应用首页