Как сделать отслеживание ширины экрана автоматически на vue?

Для отслеживания ширины экрана автоматически на Vue.js можно использовать директиву v-resize, которая реагирует на изменение размеров окна. Эта директива может быть простым оберткой над событием resize.

Для начала, создадим новый компонент ResizeWatcher, в котором будем отслеживать изменение размеров экрана и реагировать на него. Вот пример кода:

<template>
  <div></div>
</template>

<script>
export default {
  mounted() {
    window.addEventListener('resize', this.handleResize);
  },
  destroyed() {
    window.removeEventListener('resize', this.handleResize);
  },
  methods: {
    handleResize() {
      // Ваш код здесь
    }
  }
}
</script>

Теперь, чтобы получить текущую ширину экрана в методе handleResize, мы можем использовать window.innerWidth. Это свойство позволяет получить ширину окна браузера.

Но что делать, если нам нужно обновить данные в реактивном состоянии Vue? В этом случае нам понадобится использовать комбинацию реактивных свойств и методов.

Добавим переменную windowWidth в состояние компонента и обновим ее при изменении размеров окна. Затем включим отслеживание windowWidth и выведем его значение в шаблоне. Вот пример кода:

<template>
  <div>
    <p>Ширина экрана: {{ windowWidth }} пикселей</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      windowWidth: 0
    };
  },
  mounted() {
    this.handleResize();
    window.addEventListener('resize', this.handleResize);
  },
  destroyed() {
    window.removeEventListener('resize', this.handleResize);
  },
  methods: {
    handleResize() {
      this.windowWidth = window.innerWidth;
    }
  }
}
</script>

Теперь, при каждом изменении размеров экрана, значение windowWidth будет обновляться автоматически, и выведется в шаблоне.

Это простой пример отслеживания ширины экрана на Vue.js. Вы можете добавить дополнительную функциональность, например, реагировать на определенные диапазоны ширины или выполнять другие действия при изменении размеров окна.