【vue.js】文档解读【day 5】| ref模板引用

在这里插入图片描述

如果阅读有疑问的话,欢迎评论或私信!!
本人会很热心的阐述自己的想法!谢谢!!!

文章目录

  • 模板引用
    • 前言
    • 访问模板引用
    • 模板引用与v-if、v-show的结合
    • v-for中的模板引用
    • 函数模板引用

模板引用

前言

在前面学过的 v-on v-if v-show 等指令都是对DOM操作的抽象指令,而有时我们需要直接访问底层DOM元素。例如在我们刚挂载完组件实例时,想要将一个input输入框聚焦。参照之前的知识好像无法完成,在该章节我们可以使用vue提供的ref属性。我们称为模板引用

语法:

<input ref="input">

访问模板引用

挂载结束后,ref属性都会被暴露在this.$refs之上,例如我们之前的场景:

<template><p>Ask a yes/no question:<input v-model="some.nested.question" :disabled="loading"  ref="myInput"/><button @click="some.nested.question = 'b?'">点我</button></p><p>{{ answer }}</p>
</template>
<script>export default {mounted() {this.$refs.myInput.focus()}
}
</script>

注意,这里ref属性值只有在挂载之后才可以被访问,在挂载之间一直是undefined状态。因为我们的DOM在挂载前还没有被渲染,也就是ref还没有通知给引擎。例如

<script>export default {created(){this.$refs.myInput.focus();}
}
//Uncaught TypeError: Cannot read properties of undefined (reading 'focus')
</script>

模板引用与v-if、v-show的结合

我们通过上面可以知道ref属性只有在被渲染之后才可以访问到其中的值,那么我们可以联想到前面所讲的v-ifv-show的知识。如果我们ref所在的DOM元素包含v-if或者v-show会产生什么样的结果呢?结合我们学习到的知识,我觉得应该v-if会抛出错误,v-show不会抛出错误,因为两个的渲染机制不一样。例如:

<template><p><input v-model="some.nested.question" :disabled="loading"  ref="myInput" v-if="flag"/> <!--  Uncaught TypeError: Cannot read properties of undefined (reading 'focus') --><input v-model="some.nested.question" :disabled="loading"  ref="myInput2" v-show="flag"/><button @click="flag = !flag">更改input显示/隐藏</button></p>
</template>
<script>export default {data(){return{flag:false}},mounted() {this.$refs.myInput.focus();this.$refs.myInput2.focus();}
}
</script>

可以看出结果和我们预料的一样,只有v-if才会报错。

v-for中的模板引用

官方文档中解释了在对v-for中使用模板引用时,$refs中该属性是一个数组,也就是我们可以对其使用数组的方法。例如:

<template><ul><li v-for="currentValue in myArr" ref="items">{{ currentValue.myNumber }}</li></ul></p>
</template><script>
export default {data() {var myArr = [{myNumber: 1},{myNumber: 2},{myNumber: 3},{myNumber: 4},];return {myArr};},mounted() {console.log(this.$refs.items); //(4) [li, li, li, li]},
};
</script>

在上方代码中我们可以看出this.$refs.items会输出一个数组,那么我们可以使用this.$refs.items[0]访问得到第一个元素。

但是官方文档说不保证this.$refs.items与源数组相同的顺序。也就是我们在使用这个方法时需要查看一下是不是该元素,也可以使用数组中的indexOf来查找位置之后再使用该方法。

函数模板引用

对于ref中的值,我们可以是任意字符串,在mounted中使用this.$refs来引用。如果我们想要将这个DOM元素传入一个属性或者一个方法,我们可以使用函数模板引用。例如:

<button  :ref="(el)=>{console.log(el)}">按钮</button> //<!-- <button>按钮</button> -->

在使用函数模板引用时,ref是一个动态属性,需要使用v-bind来绑定。当绑定的元素被卸载时,函数也会被调用一次,此时的 el 参数会是 null。你当然也可以绑定一个组件方法而不是内联函数。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/541521.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何把Spring的Bean注入到Quartz中

前言 今天写Quartz定时调度的时候遇到了想调用增删改查操作数据库的情况 这时候在Quartz容器中 直接注入bean 但是会出现bean为空的情况&#xff0c; 一、为什么为空 这种情况是因为Quartz容器 中 它读取不到Spring 容器中的bean&#xff0c;所以我们需要加一些方法让他读到 …

macOs charles 证书过期

macOs charles ssl证书有效期是一年&#xff0c;到期续期更新 1.点击help ->SSL proxying->Install charless Certificate 完了会进入到钥匙串访问&#xff0c; 2.在钥匙串访问中 找到新生成的证书&#xff0c;点击信任&#xff0c;选择始终信任 3.如果在钥匙串种找不到…

git的实际运用

1. SSH配置和Github仓库克隆 注意博主在这里演示的SSH密钥生成方式&#xff0c;下面追加的五行不成功时可手动到.ssh下的config文件中添加即可 $ tail -5 config Host github.comHostName github.comPreferredAuthentications publickeyIdentityFile ~/.ssh/test 演示 2. 关联…

MySQL-索引事务

文章目录 前言一、 索引1.1 概念1.2 作用1.3 使用场景1.4 使用1.5 索引的底层数据结构1.5.1 用来查询的数据结构1.5.2 B树1.5.3 B树 二、事务2.1 为什么使用事务2.2 事务的概念2.3 事务的性质&#xff08;ACID&#xff09;2.4 事务的使用 前言 在这里将最近学习的MySQL中索引及…

办公自动化的得力助手 —— 定时执行专家

目录 一、软件简介 二、办公应用场景 1、自动化文件处理 2、定时提醒与日程管理 3、网络操作与远程控制 4、系统维护与优化 三、使用体验 四、总结 在快节奏的现代办公环境中&#xff0c;如何高效地管理任务、节省时间并提升工作效率成为了每个职场人士关注的焦点。今天…

为什么光学器件需要厚度

确定光学厚度的限值 光学元件的功能和性能在很大程度上受到可用光学材料的限制。制造和光学元件设计的最新发展现在拓宽了可以实现的目标。特别是&#xff0c;平面光学器件或超表面可以设计为具有大块光学元件的功能&#xff0c;但其厚度缩小到仅几百纳米。米勒现在提出了一项…

七月论文审稿GPT第3.2版和第3.5版:通过paper-review数据集分别微调Mistral、gemma

前言 我司第二项目组一直在迭代论文审稿GPT(对应的第二项目组成员除我之外&#xff0c;包括&#xff1a;阿荀、阿李、鸿飞、文弱等人)&#xff0c;比如 七月论文审稿GPT第1版&#xff1a;通过3万多篇paper和10多万的review数据微调RWKV七月论文审稿GPT第2版&#xff1a;用一万…

springboot275毕业就业信息管理系统的设计与实现

毕业就业信息管理系统设计与实现 摘 要 传统办法管理信息首先需要花费的时间比较多&#xff0c;其次数据出错率比较高&#xff0c;而且对错误的数据进行更改也比较困难&#xff0c;最后&#xff0c;检索数据费事费力。因此&#xff0c;在计算机上安装毕业就业信息管理系统软件…

【声速、频率、波长、波数、波矢】

【声速、频率、波长、波数、波矢】 在声学中,声速(Speed of Sound)、频率(Frequency)、波长(Wavelength)、波数(Wave Number)和波矢(Wave Vector)是描述声波传播特性的重要物理量。它们之间的关系如下: 声速(Speed of Sound): 表示声波在介质中传播的速度,通常…

nginx同时配置多组tcp反向代理和多组http反向代理

目录 需求背景&#xff1a; 问题分析&#xff1a; 步骤一 如何配置一组tcp反向代理 步骤一 如何配置一组http反向代理 步骤一如何同时配置一组tcp反向代理和一组http反向代理 步骤二、如何同时配置两组tcp反向代理和两组http反向代理 步骤三、如何同时配置多组tcp反向代…

基于51单片机的微波炉温度控制器设计[proteus仿真]

基于51单片机的微波炉温度控制器设计[proteus仿真] 温度检测系统这个题目算是课程设计和毕业设计中常见的题目了&#xff0c;本期是一个基于51单片机的微波炉温度控制器设计 需要的源文件和程序的小伙伴可以关注公众号【阿目分享嵌入式】&#xff0c;赞赏任意文章 2&#xff…

前端项目(vue3)自动化部署(Gitlab CI/CD)

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…