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 也会中断
相关推荐
放牛的小伙1 分钟前
分享 vue 表格 vxe-table 如何实现透视表拖拽对数据进行分组汇总,金额合计、平均值等的使用方式
vue.js
daols889 分钟前
vue 树组件 vxe-tree 如何异步判断右键菜单的权限控制,异步显示隐藏菜单选项
vue.js·vxe-ui
jqq66640 分钟前
解析ElementPlus打包源码(四、打包主题)
前端·javascript·vue.js
进击的野人42 分钟前
Vue3 响应式系统深度解析:从原理到实践
前端·vue.js·前端框架
YaeZed43 分钟前
Vue3-Teleport
前端·vue.js
pas13644 分钟前
26-mini-vue getCurrentInstance
前端·javascript·vue.js
luckyCover44 分钟前
Vue源码分析 - 响应式系统(前言篇)
前端·vue.js
码丁_1171 小时前
某知名it培训班前端三阶段vue相关面试题
前端·javascript·vue.js
烈焰飞鸟1 小时前
华为云前后端部署实战手册
运维·前端·vue.js·后端·华为云
duanyuehuan2 小时前
vue 项目中.d.ts
前端·javascript·vue.js