当前位置: 首页 > wzjs >正文

网站建设的所需解决的技术问题衡水建设局网站首页

网站建设的所需解决的技术问题,衡水建设局网站首页,react做的网站,网站延迟加载Vue 3 模板引用(Template Refs)详解与实战示例 引言 在 Vue 开发中,通常推荐使用 响应式数据 (ref 和 reactive) 进行数据绑定,而不是直接操作 DOM。但是,在某些情况下,我们确实需要访问某个组件或 DOM 元…

Vue 3 模板引用(Template Refs)详解与实战示例

引言

在 Vue 开发中,通常推荐使用 响应式数据 (refreactive) 进行数据绑定,而不是直接操作 DOM。但是,在某些情况下,我们确实需要访问某个组件或 DOM 元素,这时候就可以使用 模板引用(Template Refs)

本篇文章将详细介绍 Vue 3 的 ref 模板引用的用法、适用场景,并通过多个示例展示如何在 Vue 组件中高效操作 DOM 和组件实例。


1. 什么是 Vue 模板引用?

模板引用(Template Refs) 允许我们在 Vue 组件的模板中标记一个 DOM 元素或子组件,并在 setup 选项中访问它。

基本语法

<template><div ref="myDiv">Hello Vue!</div>
</template><script setup>
import { ref, onMounted } from 'vue';const myDiv = ref(null); // 定义模板引用onMounted(() => {console.log(myDiv.value); // 获取 DOM 元素
});
</script>

说明

  • ref="myDiv" 绑定到 myDiv 变量
  • onMounted 钩子确保 myDiv.value 在 DOM 渲染完成后可用

2. 模板引用的使用场景

✅ 操作原生 DOM

当我们需要手动操作 DOM 时,如获取元素的宽高、设置焦点等:

<template><input ref="inputRef" type="text" placeholder="输入内容"><button @click="focusInput">聚焦输入框</button>
</template><script setup>
import { ref } from 'vue';const inputRef = ref(null);const focusInput = () => {inputRef.value.focus(); // 手动聚焦输入框
};
</script>

✅ 获取子组件实例

可以使用 ref 访问子组件的方法和数据:

<!-- 子组件 (Child.vue) -->
<template><div>子组件</div>
</template><script setup>
import { ref } from 'vue';const message = ref("Hello from Child Component!");const sayHello = () => {console.log(message.value);
};defineExpose({ sayHello }); // 允许父组件访问 `sayHello`
</script>
<!-- 父组件 -->
<template><Child ref="childRef" /><button @click="callChildMethod">调用子组件方法</button>
</template><script setup>
import { ref, onMounted } from 'vue';
import Child from './Child.vue';const childRef = ref(null);onMounted(() => {console.log(childRef.value); // 获取子组件实例
});const callChildMethod = () => {childRef.value.sayHello(); // 调用子组件方法
};
</script>

defineExpose:Vue 3 需要使用 defineExpose 公开组件方法,否则父组件无法访问。


3. 使用 ref 访问多个元素

当我们需要访问 多个 DOM 元素时,可以使用 ref 结合 v-for

<template><div v-for="(item, index) in list" :key="index" ref="itemRefs">{{ item }}</div><button @click="logElements">查看所有元素</button>
</template><script setup>
import { ref, onMounted } from 'vue';const list = ref(["Vue", "React", "Angular"]);
const itemRefs = ref([]); // 存储多个 DOM 元素onMounted(() => {console.log(itemRefs.value); // 所有 div 的 DOM 元素
});const logElements = () => {itemRefs.value.forEach(el => console.log(el.textContent));
};
</script>

注意ref 数组会在 onMounted 之后才填充值。


4. 访问 setup() 之外的数据

如果你在 setup() 之外使用 ref,可以通过 getCurrentInstance() 获取 Vue 实例:

<script setup>
import { getCurrentInstance, onMounted } from 'vue';onMounted(() => {const instance = getCurrentInstance();console.log(instance.refs); // 访问 ref
});
</script>

5. 结论

Vue 3 的 模板引用(Template Refs) 让我们可以更方便地访问 DOM 和子组件实例,适用于:

  • 操作原生 DOM(如获取焦点、测量元素尺寸)
  • 调用子组件方法(通过 refdefineExpose
  • 获取多个元素(使用 ref 数组)

但是,如果能用 Vue 的 响应式数据 来实现同样的效果,最好避免直接操作 DOM,以保持 Vue 响应式系统的优势。


文章转载自:

http://MaGTfgYg.cpwmj.cn
http://832kSV8L.cpwmj.cn
http://tdcOYCDn.cpwmj.cn
http://pFXPB6U0.cpwmj.cn
http://b7j4gXo5.cpwmj.cn
http://56q5Q6Gw.cpwmj.cn
http://iUNWOBZR.cpwmj.cn
http://E5tqViCe.cpwmj.cn
http://PtrYGeh4.cpwmj.cn
http://eoXYpTi9.cpwmj.cn
http://06giWtAk.cpwmj.cn
http://SrZ6yMw6.cpwmj.cn
http://tP7kx5rv.cpwmj.cn
http://v9JhFtan.cpwmj.cn
http://KHNyRVsW.cpwmj.cn
http://wFm96H69.cpwmj.cn
http://LtpBXHua.cpwmj.cn
http://xx2g9mUC.cpwmj.cn
http://dSzbRvMo.cpwmj.cn
http://0NZvKoBj.cpwmj.cn
http://7j8HkA5C.cpwmj.cn
http://njHrFCxz.cpwmj.cn
http://r8MAgcy0.cpwmj.cn
http://kxdue642.cpwmj.cn
http://ORkxtrO2.cpwmj.cn
http://NiVnjb1d.cpwmj.cn
http://LtzDk7lS.cpwmj.cn
http://DJ8tOfhH.cpwmj.cn
http://8Li3VgFl.cpwmj.cn
http://dv2rvk8z.cpwmj.cn
http://www.dtcms.com/wzjs/637334.html

相关文章:

  • 杭州手机网站制作中国菲律宾混血
  • dw网页设计模板网站建站怎么赚钱
  • 深圳做企业网站的公司南浔建设局网站
  • 个人网站如何在工信部备案域名查询服务器ip
  • 城乡住房和城乡建设部网站站长工具网址是多少
  • 辽宁网站建设多少钱墨子网站建设
  • 工业设计灵感网站无锡电子商城网站设计
  • 自己怎做网站网站内容设计
  • 建设企业银行网站深圳做网站设计
  • docker做网站企业做淘宝网站需要多少钱
  • 中国印花图案设计网站wordpress 主题.分页
  • 网站模板 婴儿山东省建设公司网站
  • 外贸中间体做哪个网站好高端品牌羽绒服前十名
  • 广东企业网站建设推荐装修设计方案
  • 南宁网站建设网络公司移动互联网营销
  • 青岛网站排名哪家公司好网站组建 需求分析
  • wordpress音乐站源码吉安好的网站建设公司
  • 接加工订单的网站谷德设计网工作
  • 沧州企业网站建设方案购物网站建设目标
  • 常见网站漏洞土木工程招聘网最新招聘信息
  • 网站建设收费标准公司wordpress聊天室插件
  • 搜索引擎怎么收录网站做网站公司需要什么
  • 郑州网站推广电话网站编辑电子商务网站运营专员
  • 网站建设 ui 企业网站网站排名突然掉没了
  • 建设银行网站钓鱼阿里云1M做网站
  • 如何更换网站服务商wordpress用还得shopif好用
  • 网站海外推广多少钱徐州网站建设哪家好薇
  • 网站被墙检测网页设计参考板式
  • 网站建设做的好处网站收录不好怎么办
  • 信息聚合网站怎么做河北高端网站建设