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 也会中断
相关推荐
Yehong7 小时前
nuxt实现50个前端小创意(1)——前端基础学习
前端·vue.js
拉不动的猪7 小时前
回顾vue3组件在运行过程中的编译提升
前端·vue.js·trae
胡斌附体10 小时前
vue组件和插件的区别
vue.js·组件·插件·vue.component·vue.use
layman052810 小时前
Vue中的 VueComponent
前端·javascript·vue.js
mqiqe11 小时前
vue发版html 生成打包到docker镜像进行发版
vue.js·docker·html
疯狂的沙粒14 小时前
React与Vue的内置指令对比
开发语言·前端·javascript·vue.js
GISer_Jing15 小时前
低代码——表单生成器Form Generator详解(二)——从JSON配置项到动态渲染表单渲染
前端·vue.js
CXH72816 小时前
从零开始创建 Vue 3 开发环境并构建第一个 Demo
前端·javascript·vue.js
夏木。。。16 小时前
vue+elementPlus实现表格展示序号并且翻页不重新排
vue.js·elementplus
小张快跑。17 小时前
<el-date-picker>配置禁用指定日期之前的时间选择(Vue2+Vue3)
前端·javascript·vue.js