Как отследить изменение offsetTop во vue3?

Для отслеживания изменений значения offsetTop во Vue 3 можно использовать реактивные свойства в сочетании с директивами.

Реактивное свойство позволяет отслеживать изменения и автоматически обновлять весь интерфейс, связанный с ним. В данном случае, мы можем создать реактивное свойство для отслеживания offsetTop элемента.

Вначале установите Vue 3, если он еще не установлен, с помощью следующей команды:

npm install vue@next

Затем можно создать компонент, который будет следить за изменением offsetTop. Ниже приведен пример компонента Vue, в котором отслеживается изменение offsetTop и выводится его значение:

<template>
  <div>
    <h1>OffsetTop: {{ offsetTop }}</h1>
    <div ref="element" v-offset-top>
      <!-- Ваш код -->
    </div>
  </div>
</template>

<script>
import { ref, onMounted, watchEffect } from 'vue';

export default {
  name: 'Component',
  setup() {
    const offsetTop = ref(0);

    const updateOffsetTop = () => {
      if (this.$refs.element) {
        offsetTop.value = this.$refs.element.offsetTop;
      }
    };

    onMounted(() => {
      updateOffsetTop();
      window.addEventListener('scroll', updateOffsetTop);
    });

    watchEffect(() => {
      console.log(offsetTop.value);
    });

    return {
      offsetTop,
    };
  },
};
</script>

<style scoped>
</style>

В данном примере мы создали реактивное свойство offsetTop, которое инициализируется со значением 0. Затем мы создали функцию updateOffsetTop, в которой мы обновляем значение offsetTop, используя свойство ref для доступа к элементу с помощью this.$refs. При монтировании компонента мы вызываем функцию updateOffsetTop и добавляем обработчик события прокрутки окна, чтобы обновить значение offsetTop при прокрутке.

Мы также используем watchEffect для отслеживания изменений значения offsetTop и вывода его в консоль. Когда значение offsetTop изменяется, watchEffect будет автоматически вызываться и выполнять свой код.

В шаблоне компонента мы выводим значение offsetTop с помощью двойных фигурных скобок.

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