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状态管理工具Vuex工作原理解析

    Vue状态管理工具Vuex工作原理解析

    Vuex是一个专为Vue.js应用程序开发的状态管理模式,下面这篇文章主要给大家介绍了关于Vue中状态管理器(vuex)详解以及实际应用场景的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-02-02
  • vue3中getCurrentInstance获取组件实例踩坑详细记录

    vue3中getCurrentInstance获取组件实例踩坑详细记录

    getCurrentInstance()是Vue.js3 Composition API中的一个函数,它的作用是获取当前组件的实例对象,下面这篇文章主要给大家介绍了关于vue3中getCurrentInstance获取组件踩坑的相关资料,需要的朋友可以参考下
    2024-02-02
  • Vue3模板引用的操作方式示例详解

    Vue3模板引用的操作方式示例详解

    这篇文章主要为大家介绍了Vue3模板引用的操作方式示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-06-06
  • 前端项目vue3/React如何使用pako库解压缩后端返回gzip数据

    前端项目vue3/React如何使用pako库解压缩后端返回gzip数据

    pako是一个流行的JS库,用于在浏览器中进行数据压缩和解压缩操作,它提供了对常见的压缩算法的实现,使开发者能够在客户端上轻松进行数据压缩和解压缩,这篇文章主要介绍了前端项目vue3/React使用pako库解压缩后端返回gzip数据,需要的朋友可以参考下
    2024-07-07
  • vue3+element-plus暗黑模式切换动画圆弧过渡效果

    vue3+element-plus暗黑模式切换动画圆弧过渡效果

    文章介绍了如何在Vue 3和Element Plus中实现暗黑模式的切换,并通过动画和圆弧过渡效果提升用户体验,本文给大家介绍的非常详细,感兴趣的朋友一起看看吧
    2025-01-01
  • Vue.js每天必学之表单控件绑定

    Vue.js每天必学之表单控件绑定

    Vue.js每天必学之表单控件绑定,如何在表单控件元素上创建双向数据绑定,感兴趣的小伙伴们可以参考一下
    2016-09-09
  • vue 防止页面加载时看到花括号的解决操作

    vue 防止页面加载时看到花括号的解决操作

    这篇文章主要介绍了vue 防止页面加载时看到花括号的解决操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • vue-element-admin中node-sass换成dart-sass,安装依赖报code 128多种问题的解决方法

    vue-element-admin中node-sass换成dart-sass,安装依赖报code 128多种问题的解决

    这篇文章主要介绍了vue-element-admin中node-sass换成dart-sass,安装依赖报code 128多种问题的解决方法,本文给大家分享问题原因分析及解决方法,需要的朋友可以参考下
    2023-02-02
  • vue3中的hooks总结

    vue3中的hooks总结

    这篇文章主要介绍了vue3中的hooks总结,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05
  • vue+elementui通用弹窗的实现(新增+编辑)

    vue+elementui通用弹窗的实现(新增+编辑)

    这篇文章主要介绍了vue+elementui通用弹窗的实现(新增+编辑),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01

最新评论