vue3模板引用ref

embedded/2025/1/13 2:55:00/

1.访问模板引用

要在组合式 API 中获取引用,我们可以使用辅助函数 useTemplateRef() 

只可以在组件挂载后才能访问模板引用

javascript"><script setup>
import { useTemplateRef, onMounted } from 'vue'// 第一个参数必须与模板中的 ref 值匹配
const input = useTemplateRef('my-input')onMounted(() => {input.value.focus()
})
</script><template><input ref="my-input" />
</template>

2. v-for 中的模板引用

当在 v-for 中使用模板引用时,对应的 ref 中包含的值是一个数组,它将在元素被挂载后包含对应整个列表的所有元素

但是ref 数组并不保证与源数组相同的顺序

javascript"><script setup>
import { ref, useTemplateRef, onMounted } from 'vue'const list = ref([/* ... */
])const itemRefs = useTemplateRef('items')onMounted(() => console.log(itemRefs.value))
</script><template><ul><li v-for="item in list" ref="items">{{ item }}</li></ul>
</template>

3.组件上的 ref

javascript"><script setup>
import { useTemplateRef, onMounted } from 'vue'
import Child from './Child.vue'const childRef = useTemplateRef('child')onMounted(() => {// childRef.value 将持有 <Child /> 的实例
})
</script><template><Child ref="child" />
</template>

注意:

(1)如果是选项式API或没有使用 <script setup>,父组件对子组件的每一个属性和方法都有完全的访问权.

(2)但是使用了 <script setup> 的组件是默认私有的,也就是父组件无法访问子组件上的任何东西,需要添加defineExpose 宏显式暴露

javascript"><script setup>
import { ref } from 'vue'const a = 1
const b = ref(2)// 像 defineExpose 这样的编译器宏不需要导入
defineExpose({a,b
})
</script>


http://www.ppmy.cn/embedded/153440.html

相关文章

Unity3d 基于Barracuda推理库和YOLO算法实现对象检测功能

前言 近年来&#xff0c;随着AI技术的发展&#xff0c;在游戏引擎中实现和运行机器学习模型的需求也逐渐显现。Unity3d引擎官方推出深度学习推理框架–Barracuda &#xff0c;旨在帮助开发者在Unity3d中轻松地实现和运行机器学习模型&#xff0c;它的主要功能是支持在 Unity 中…

如何训练大型语言模型?

训练大型语言模型&#xff08;LLMs&#xff09;是一个复杂且资源密集的过程&#xff0c;它通常包括以下几个关键步骤&#xff1a; 1. 数据收集 数据收集是训练大型语言模型的第一步。这个过程需要获取大量、高质量的文本数据。数据来源可以是公开可用的网页、新闻文章、社交媒…

79 Openssl3.0 RSA公钥加密数据

1 引言 最近不小心用到了openssl3.0&#xff0c;项目中需要使用rsa非对称加解密算法&#xff0c;所以把openssl3.0使用公钥加密数据的函数调用摸了一遍。 之所以记录此篇文章&#xff0c;是因为网络上大多数是openssl3.0以前的版本的函数接口&#xff0c;而openssl3.0之后已经丢…

如何在应用或系统中正确解析和渲染淘宝商品详情API接口返回的HTML内容?

选择合适的编程语言和工具 后端语言&#xff1a; 如果是在后端处理&#xff0c;像 Python 有许多库可以帮助解析 HTML。例如&#xff0c;BeautifulSoup是一个功能强大且易于使用的 HTML 解析库。首先需要安装BeautifulSoup&#xff0c;可以使用pip install beautifulsoup4命令进…

服务器登陆后有java变量

需求&#xff1a;在ssh服务器后&#xff0c;用户root 使用java会报错&#xff0c;没有这个变量&#xff0c;其实环境变量中已经有配置了&#xff0c;在/etc/profile 中有写变量及地址&#xff0c;通过source /etc/profile 命令也可以使环境变量加载上&#xff0c;但是ssh后不会…

jenkins入门13--pipeline

Jenkins-pipeline(1)-基础 为什么要使用pipeline 代码&#xff1a;pipeline 以代码的形式实现&#xff0c;通过被捡入源代码控制&#xff0c; 使团队能够编译&#xff0c;审查和迭代其cd流程 可连续性&#xff1a;jenkins 重启 或者中断后都不会影响pipeline job 停顿&#x…

vue项目封装api接口事项

vue项目封装api准备 vue项目vue项目目录对应的src文件夹 vue项目 本项目只提及一些修改的细节&#xff0c;如有错误&#xff0c;可在评论区指出交流。 vue项目目录对应的src文件夹 本章节针对src文件夹下操作&#xff1a; 封装api,需要先创建请求的request.js文件&#xff0…

MAX3232芯片介绍

MAX3232 是一个常用的 串口电平转换芯片&#xff0c;通常用于 RS-232串口通信 中。它的主要作用是将 RS-232 的 电平信号 转换为 TTL电平信号&#xff0c;使其能够与微控制器&#xff08;如Arduino、STM32、Raspberry Pi等&#xff09;等设备兼容。 为什么需要 MAX3232&#x…