如何在 Vue 中处理窗口大小调整事件

发布于 2022-06-10 13:27:15 字数 2518 浏览 979 评论 0

要在 Vue 中处理 窗口大小调整事件 ,您有几个选择。

添加事件监听器

您可以为窗口注册一个事件监听器 resize事件使用 addEventListener()当 Vue 挂载组件时。
您还应该在卸载组件时清理事件侦听器。
这是使用 HTML 模板进行的现场演示:

const app = new Vue({
  data: () => ({
    width: document.documentElement.clientWidth,
    height: document.documentElement.clientHeight
  }),
  mounted() {
    window.addEventListener('resize', this.getDimensions);
  },
  unmounted() {
    window.removeEventListener('resize', this.getDimensions);
  },
  methods: {
    getDimensions() {
      this.width = document.documentElement.clientWidth;
      this.height = document.documentElement.clientHeight;
    }
  }
})
<div>
  <p>The window width and height are respectively {{width}}, {{height}}</p>
</div>

窗口宽度和高度分别为 {{width}}, {{height}}

缺点是任何需要监听的组件 resizeevent 需要注册全局事件。
这对于一次性来说很好,但如果多个组件需要听 resize事件。 指令是一种替代方法,它使多个组件能够监听 resize事件而不访问窗口。

创建一个 Vue 指令

创建自定义滚动事件 ,您可以创建用于调整窗口大小的指令。

Vue.directive('resize', {
  inserted: function(el, binding) {
    const onResizeCallback = binding.value;
    window.addEventListener('resize', () => {
      const width = document.documentElement.clientWidth;
      const height = document.documentElement.clientHeight;
      onResizeCallback({ width, height });
    })
  }
});

const app = new Vue({
  data: {
    width: document.documentElement.clientWidth,
    height: document.documentElement.clientHeight
  },
  methods: {
    setDimensions: function({ width, height }) {
      this.width = width;
      this.height = height;
    }
  },
  template: `
    <div>
      <div v-resize="setDimensions">
        <p>the width and height are respectively {{width}}, {{height}} </p>
      </div>
    </div>
  `
});

这是使用 HTML 模板进行的现场演示:

<div>
  <div v-resize="setDimensions">
    <p>The window width and height are respectively {{width}}, {{height}} </p>
  </div>
</div>

窗口宽度和高度分别为 {{width}}, {{height}}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

不及他

暂无简介

文章
评论
24 人气
更多

推荐作者

fangs

文章 0 评论 0

朱染

文章 0 评论 0

zhangcx

文章 0 评论 0

Willy

文章 0 评论 0

taohaoge

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文