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 也会中断
相关推荐
伍哥的传说3 小时前
Vue 3 useModel vs defineModel:选择正确的双向绑定方案
前端·javascript·vue.js·definemodel对比·usemodel教程·vue3.4新特性·vue双向绑定
杨荧9 小时前
基于Python的农作物病虫害防治网站 Python+Django+Vue.js
大数据·前端·vue.js·爬虫·python
silent_missile11 小时前
element-plus穿梭框transfer的调整
前端·javascript·vue.js
yes or ok13 小时前
前端工程师面试题-vue
前端·javascript·vue.js
_Congratulate14 小时前
vue3高德地图api整合封装(自定义撒点、轨迹等)
前端·javascript·vue.js
页面仔Dony14 小时前
Vue2 与 Vue3 深度对比
vue.js·前端框架
Juchecar15 小时前
Vue3 组件生命周期详解
前端·vue.js
Juchecar16 小时前
Vue3 模板引用 useTemplateRef 详解
前端·vue.js
YuJie16 小时前
vue3 无缝滚动
前端·javascript·vue.js
Juchecar16 小时前
Vue3 表单输入 v-model 指令详解
前端·vue.js