【发布时间】:2023-02-17 22:17:43
【问题描述】:
我是 Vue 组合 API 的新手,需要使用 Document 方法 querySelector。但是,它没有按预期工作。如果我写
<nav class="home-menu pure-menu pure-menu-horizontal pure-menu-fixed">
<script setup>
import { ref } from "vue";
const observer = new IntersectionObserver(handleIntersection);
const target = document.querySelector(".home-menu");
observer.observe(target);
console.log(target);
目标为空。阅读文档我看到了 ref 属性,如果我
<nav ref="navbar" class="home-menu pure-menu pure-menu-horizontal pure-menu-fixed">
<script setup>
import { ref } from "vue";
const target = ref("navbar");
console.log(target);
我安慰一个对象。 ref 是在组合 API 中获取 DOM 元素的方式吗?我现在可以在我的观察者对象中使用 target 吗?它等同于querySelector吗?我试过这个
import { ref } from "vue";
const observer = new IntersectionObserver(handleIntersection);
const target = ref("navbar");
observer.observe(target);
但有错误
未捕获的类型错误:IntersectionObserver.observe:参数 1 未实现接口元素。
谢谢。
【问题讨论】:
-
Vue 模板引用是不是像
querySelector。querySelector采用 CSS 选择器并返回匹配元素(如果存在)。使用模板引用,您可以定义一个引用并在模板中使用它。相反,可以这样想:您像往常一样定义一个ref,然后,当评估模板时,带有ref="name"的元素使用你定义的 ref,有点像变量访问。 -
对于
querySelector,DOM 排在第一位,您可以从中选择一些内容。对于模板引用,引用首先出现,然后元素将自身绑定到该引用。
标签: vuejs3 vue-composition-api