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

Vue模板引用之ref特殊属性

1. 使用实例

<template><input ref="input" name="我是input的name" /><br /><ul><li v-for="arr in array" :key="arr" id="111" ref="itemRefs">{{arr}}</li></ul>
</template>
<script setup>
import { ref, onMounted, watch, watchEffect, reactive } from "vue";// 声明一个 ref 来存放该元素的引用
// 必须和模板里的 ref 同名
let input = ref(null);
let input1 = ref(null);let array = ref([0, 1, 2, 3]);
//定义一个与li中ref值同名的响应式属性
let itemRefs=ref([])//一定要在组件挂载后才能通过ref访问组件
onMounted(() => {input.value.focus();
});//ref控件为单数时使用
watchEffect(() => {if (input.value) {input.value.focus();//获取控件的属性,比方说name需要用input.valueconsole.log("ref绑定控件的name属性:", input.value.name);} else {// 此时还未挂载,或此元素已经被卸载(例如通过 v-if 控制)}
});//ref与v-for进行结合获取dom元素为数组
watchEffect(() => {if (itemRefs.value) {//console.log("itemRefs:", itemRefs.value[0]);} else {// 此时还未挂载,或此元素已经被卸载(例如通过 v-if 控制)}
});
</script><style scoped>
</style>

在这里插入图片描述

2. 组件使用ref
父组件

<template><classtest ref="child" />
</template>
<script setup>
import { ref, onMounted } from "vue";
import classtest from './components/classtest.vue'// 声明一个 ref 来存放该元素的引用
// 必须和组件里的 ref 同名
let child  = ref(null);//一定要在组件挂载后才能通过ref访问组件
onMounted(() => {console.log('子组件中X的值为:',child.value.x)console.log('子组件中y的值为:',child.value.y)
});
</script><style scoped>
</style>

子组件

<template><div>{{x}}</div>
</template><script setup>
import {ref} from 'vue'
name:'classtest'let x=ref(1)let y=ref(2)//应为使用了setup,使得组件默认为私有的
//如想获取组件内容,使用defineExpose 宏显式暴露
defineExpose({x,y
})
</script><style></style>

在这里插入图片描述

相关文章:

  • 说说UE5中的几种字符串类
  • 力扣爆刷第80天--动态规划一网打尽子序列一维二维连续不连续变体
  • Excel工作表控件实现滚动按钮效果
  • 20.scala视图界定
  • 题目 1124: C语言训练-大、小写问题
  • matlab一维二维和三维RBF插值方法
  • 第7.1章:StarRocks性能调优——查询分析
  • 多输入时序预测|WOA-CNN|鲸鱼算法优化的卷积神经网络时序预测(Matlab)
  • 计算机网络面经-从浏览器地址栏输入 url 到显示主页的过程?
  • LeetCode 2433.找出前缀异或的原始数组
  • 5 buuctf解题
  • 淘宝京东1688实时API商品详情数据解析:获取市场最新趋势
  • 基于Java SSM框架实现高考填报信息系统项目【项目源码】
  • 第6.3章:StarRocks查询加速——Bucket Shuffle Join
  • fastJSON 字符串转对象
  • 【个人向】《HTTP图解》阅后小结
  • GitUp, 你不可错过的秀外慧中的git工具
  • learning koa2.x
  • PermissionScope Swift4 兼容问题
  • Shell编程
  • 安装python包到指定虚拟环境
  • 初识 webpack
  • 干货 | 以太坊Mist负责人教你建立无服务器应用
  • 关于 Cirru Editor 存储格式
  • 诡异!React stopPropagation失灵
  • 基于OpenResty的Lua Web框架lor0.0.2预览版发布
  • 警报:线上事故之CountDownLatch的威力
  • 聊聊redis的数据结构的应用
  • Unity3D - 异步加载游戏场景与异步加载游戏资源进度条 ...
  • ​configparser --- 配置文件解析器​
  • ​七周四次课(5月9日)iptables filter表案例、iptables nat表应用
  • # 计算机视觉入门
  • # 数论-逆元
  • #define与typedef区别
  • #HarmonyOS:基础语法
  • $emit传递多个参数_PPC和MIPS指令集下二进制代码中函数参数个数的识别方法
  • (3)STL算法之搜索
  • (4)Elastix图像配准:3D图像
  • (保姆级教程)Mysql中索引、触发器、存储过程、存储函数的概念、作用,以及如何使用索引、存储过程,代码操作演示
  • (层次遍历)104. 二叉树的最大深度
  • (翻译)Entity Framework技巧系列之七 - Tip 26 – 28
  • (附源码)spring boot火车票售卖系统 毕业设计 211004
  • (附源码)springboot人体健康检测微信小程序 毕业设计 012142
  • (六)激光线扫描-三维重建
  • (一)SpringBoot3---尚硅谷总结
  • .a文件和.so文件
  • .equal()和==的区别 怎样判断字符串为空问题: Illegal invoke-super to void nio.file.AccessDeniedException
  • .gitignore文件—git忽略文件
  • .NET MVC 验证码
  • .NET 服务 ServiceController
  • .net 开发怎么实现前后端分离_前后端分离:分离式开发和一体式发布
  • .NET/C# 项目如何优雅地设置条件编译符号?
  • .NetCore实践篇:分布式监控Zipkin持久化之殇
  • /etc/motd and /etc/issue
  • :如何用SQL脚本保存存储过程返回的结果集