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 也会中断
相关推荐
铅笔侠_小龙虾42 分钟前
Vue 学习目录
前端·vue.js·学习
zhousenshan42 分钟前
Vite 前端构建工具
vue.js
悟能不能悟44 分钟前
vue的history和hash模式有什么不一样
前端·vue.js
Uso_Magic1 小时前
VOL问题记录!!!
vue.js
FFF-X1 小时前
Vue3 封装优雅的全局状态提示组件(StatusMessage)
vue.js
北杳同学1 小时前
前端一些用得上的有意思网站
前端·javascript·vue.js·学习
夏小花花3 小时前
<editor> 组件设置样式不生效问题
java·前端·vue.js·xss
北辰alk3 小时前
Vue Router 组件内路由钩子全解析
前端·vue.js
JIngJaneIL3 小时前
基于Java二手交易管理系统(源码+数据库+文档)
java·开发语言·数据库·vue.js·spring boot
一 乐3 小时前
宠物店管理|基于Java+vue的宠物猫店管理管理系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot·后端