监视vueuse的useElementVisibility更改不起作用

hmae6n7t  于 2023-01-17  发布在  Vue.js
关注(0)|答案(1)|浏览(316)

我在https://github.com/eric-g-97477-vue/vue-project上有一个样例项目
这是安装了vueuse的默认vue项目。
我将HelloWorld.vue的脚本和模板部分修改为:

<script setup>
import { watch, ref } from "vue";
import { useElementVisibility } from "@vueuse/core";

defineProps({
  msg: {
    type: String,
    required: true,
  },
});

const me = ref(null);
const isVisible = useElementVisibility(me);
watch(me, (newValue, oldValue) => {
  console.log("visibilityUpdated", newValue, oldValue);
});
</script>

<template>
  <div ref="me" class="greetings">
    <h1 class="green">{{ msg }}</h1>
    <h3>
      You’ve successfully created a project with
      <a href="https://vitejs.dev/" target="_blank" rel="noopener">Vite</a> +
      <a href="https://vuejs.org/" target="_blank" rel="noopener">Vue 3</a>.
    </h3>
  </div>
</template>

并调整了App.vue,以便HelloWorld组件可以轻松地滚动到屏幕上或从屏幕上退出。
这看起来与Usage演示代码匹配。主要区别是我使用的是<script setup>,而演示代码不是。但是,也许,我需要做一些不同的事情,因此...?
当应用加载并指示HelloWorld组件可见时,监视器将触发,但实际上组件不可见。此外,无论我是否滚动以使组件可见,监视器都不会再次触发。
我哪里做错了?
更新:基于我需要将ref="me"添加到模板中的div的发现修改了这个问题。没有这个,监视器永远不会启动。

hpcdzsge

hpcdzsge1#

尝试设置您的wathcher如下:

watch(() => me,
  (newValue, oldValue) => {
    console.log('visibilityUpdated');
})

相关问题