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 也会中断
相关推荐
一 乐10 小时前
婚纱摄影网站|基于ssm + vue婚纱摄影网站系统(源码+数据库+文档)
前端·javascript·数据库·vue.js·spring boot·后端
北辰alk12 小时前
Vue 模板引擎深度解析:基于 HTML 的声明式渲染
vue.js
北辰alk12 小时前
Vue 自定义指令完全指南:定义与应用场景详解
vue.js
北辰alk12 小时前
Vue 动态路由完全指南:定义与参数获取详解
vue.js
北辰alk12 小时前
Vue Router 完全指南:作用与组件详解
vue.js
北辰alk13 小时前
Vue 中使用 this 的完整指南与注意事项
vue.js
xkxnq13 小时前
第二阶段:Vue 组件化开发(第 16天)
前端·javascript·vue.js
北辰alk13 小时前
Vue 插槽(Slot)完全指南:组件内容分发的艺术
vue.js
北辰alk13 小时前
Vue 组件中访问根实例的完整指南
vue.js
北辰alk13 小时前
Vue Router 中获取路由参数的全面指南
vue.js