vue3监听resize窗口事件(离开页面要销毁窗口事件)

 更新时间:2023年11月02日 11:15:56   作者:浅浅一笑^*^  
这篇文章主要给大家介绍了关于vue3监听resize窗口事件(离开页面要销毁窗口事件)的相关资料,vue是单页面应用,路由切换后,定时器并不会自动关闭,需要手动清除,当页面被销毁时,清除定时器即可,需要的朋友可以参考下

resize事件:

resize事件是改变窗口大小时发生的事件,可以在窗口开启、最大化、最小化、窗口大小改变(如拖拉改变窗口大小、move语句改变窗口大小、改变width或height属性以改变窗口大小)时发生。

1.监听浏览器窗口变化,实时获取该窗口的宽度和高度

//封装getWindowInfo()方法
const getWindowInfo = () => {
	const windowInfo = {
		width: window.innerWidth,
		hight: window.innerHeight
	}
	console.log(windowInfo);
};

2.监听 resize 事件

//通过window监听
window.addEventListener('resize', getWindowInfo);
//缺点是会频繁触发这个事件,造成页面卡顿,优化的方法使用防抖或节流。

//优化后的方法:

防抖debounce:在事件触发n秒后再执行,如果在n秒内又有新的触发,就重新计算

节流throttle:连续事件触发,在指定的时间内,不管触发几次,就只执行一次

//使用防抖 (setTimeout定时器)
const getWindowInfo = () => {
	const windowInfo = {
		width: window.innerWidth,
		hight: window.innerHeight
	}
};
const debounce = (fn, delay) => {
	let timer;
	return function() {
		if (timer) {
			clearTimeout(timer);
		}
		timer = setTimeout(() => {
			fn();
		}, delay);
	}
};
//触发事件    触发时间(指定时间内执行事件)
const cancalDebounce = debounce(getWindowInfo, 500);
window.addEventListener('resize', cancalDebounce);
//vue3 使用生命周期销毁钩子
  onUnmounted(() => {
        console.log('onUnmounted','打印是否生效');
        //移除监听事件
        window.removeEventListener('resize', cancalDebounce);
   })

vue2和vue3的生命周期如下:

在这里插入图片描述

vue3使用生命周期钩子例子:

<script>
import { onMounted } from 'vue'  // 首先需要通过组合式API的方式把声明周期钩子引入项目

  export default {
    setup() {
      onMounted(() => {   // 在 setup 函数中,使用箭头函数的方式使用。
        console.log('onMounted')
      })
    },
  }
</script>

vue3 生命周期执行顺序:

<template>
  <div>
    <h1>content : {{num}}</h1>
    <el-button type="primary" @click="num++">num++</el-button>
  </div>
</template>
<script>
  import { onBeforeMount, onMounted, onBeforeUpdate, onUpdated, onBeforeUnmount, onUnmounted, onErrorCaptured, ref } from 'vue'
  export default {
    setup() {
      const num = ref(0)
      onBeforeMount(() => {
        console.log('onBeforeMount')
      })
      onMounted(() => {
        console.log('onMounted')
      })
      onBeforeUpdate(() => {
        console.log('onBeforeUpdate')
      })
      onUpdated(() => {
        console.log('onUpdated')
      })
      onBeforeUnmount(() => {
        console.log('onBeforeUnmount')
      })
      onUnmounted(() => {
        console.log('onUnmounted')
      })
      onErrorCaptured(() => {
        console.log('onErrorCaptured')
      })
      console.log('setup执行了')
      return { num }
    },
  }
</script>
<style scoped>
</style>

总结 

到此这篇关于vue3监听resize窗口事件(离开页面要销毁窗口事件)的文章就介绍到这了,更多相关vue3监听resize窗口事件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Vue.js中使用${}实现变量和字符串的拼接方式

    Vue.js中使用${}实现变量和字符串的拼接方式

    这篇文章主要介绍了Vue.js中使用${}实现变量和字符串的拼接方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • vue3.0在子组件中触发的父组件函数方式

    vue3.0在子组件中触发的父组件函数方式

    这篇文章主要介绍了vue3.0在子组件中触发的父组件函数方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-04-04
  • vue项目刷新当前页面的三种方式(重载当前页面数据)

    vue项目刷新当前页面的三种方式(重载当前页面数据)

    这篇文章主要介绍了vue项目刷新当前页面的三种方式(重载当前页面数据),本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-01-01
  • 手把手教你写一个vue全局注册的Toast的实现

    手把手教你写一个vue全局注册的Toast的实现

    本文主要介绍了手把手教你写一个vue全局注册的Toast的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-04-04
  • Vue导入Echarts实现散点图

    Vue导入Echarts实现散点图

    这篇文章主要为大家详细介绍了Vue导入Echarts实现散点图,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-12-12
  • Vue.Draggable使用文档超详细总结

    Vue.Draggable使用文档超详细总结

    Vue拖拽组件(Draggable)是一个允许与View-Model同步进行拖放排序的Vue组件,下面这篇文章主要给大家介绍了关于Vue.Draggable使用文档的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-08-08
  • Vue单文件组件基础模板小结

    Vue单文件组件基础模板小结

    本篇文章主要介绍了Vue单文件组件基础模板小结,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • 解决vite.config.js无法使用__dirname的问题

    解决vite.config.js无法使用__dirname的问题

    这篇文章主要介绍了解决vite.config.js无法使用__dirname的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-10-10
  • vue3 实现牙位图选择器的实例代码

    vue3 实现牙位图选择器的实例代码

    这篇文章主要介绍了vue3 实现牙位图选择器的实例代码,代码简单易懂,需要的朋友参考下吧
    2025-04-04
  • Vue3从0搭建Monorepo项目组件库

    Vue3从0搭建Monorepo项目组件库

    这篇文章主要为大家介绍了Vue3从0搭建Monorepo项目组件库示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02

最新评论