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 也会中断
相关推荐
李白的天不白31 分钟前
如何项目发布到github上
android·vue.js
FlyWIHTSKY38 分钟前
Vue 3 + 原生 CSS Float
前端·css·vue.js
533_1 小时前
[pinia] vue3中监听pinia值的变化
前端·javascript·vue.js
暗不需求1 小时前
用 Vue 3 搓一个 AI 冰球形象生成器:从源码到 Coze 工作流全解析
前端·vue.js·ai编程
焰火19991 小时前
[前端]单文件上传组件
前端·vue.js
吴声子夜歌2 小时前
Vue3——UI组件库Element Plus(二)
javascript·vue.js·ui·elementplus
ppandss12 小时前
JavaWeb从0到1-DAY3.1- Vue(ii)
前端·javascript·vue.js
M ? A2 小时前
Vue 转 React | VuReact编译工具快速入门
前端·javascript·vue.js·后端·react.js·面试·vureact
qq_427539833 小时前
iframe 嵌入预览 PDF ,禁用右键菜单、打印下载按钮不展示
前端·javascript·vue.js·pdf
阿丰资源15 小时前
SpringBoot+Vue实战:打造企业级在线文档管理系统
vue.js·spring boot·后端