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 3 组件开发最佳实践:可复用组件设计模式
vue.js
叫我詹躲躲1 天前
Vue 3 动画效果实现:Transition和TransitionGroup详解
javascript·vue.js
叫我詹躲躲1 天前
别再用mixin了!Vue3自定义Hooks让逻辑复用爽到飞起
javascript·vue.js
珑墨1 天前
【迭代器】js 迭代器与可迭代对象终极详解
前端·javascript·vue.js
粉末的沉淀1 天前
tauri:关闭窗口后最小化到托盘
前端·javascript·vue.js
南山安1 天前
Vue学习:ref响应式数据、v-指令、computed
javascript·vue.js·面试
小胖霞1 天前
企业级全栈 RBAC 实战 (11):菜单管理与无限层级树形表格
vue.js·前端框架·前端工程化
鲸落落丶1 天前
Vue Router路由
前端·javascript·vue.js
米方1 天前
ElementPlus 穿梭框支持批量穿梭
前端·javascript·vue.js
InkHeart1 天前
uni-app开发路上的坑
前端·vue.js