我在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
的发现修改了这个问题。没有这个,监视器永远不会启动。
1条答案
按热度按时间hpcdzsge1#
尝试设置您的wathcher如下: