Vue中ref和$refs的介绍以及使用方法示例
作者:@Demi 发布时间:2023-07-02 17:00:10
标签:vue,ref,$refs
前言
在JavaScript中需要通过document.querySelector("#demo")来获取dom节点,然后再获取这个节点的值。在Vue中,我们不用获取dom节点,元素绑定ref之后,直接通过this.$refs即可调用,这样可以减少获取dom节点的消耗。
ref介绍
ref被用来给元素或子组件注册引用信息。引用信息将会注册在父组件的 $refs对象上。如果在普通的 DOM 元素上使用,引用指向的就是 DOM 元素;如果用在子组件上,引用就指向该子组件实例
通俗的讲,ref特性就是为元素或子组件赋予一个ID引用,通过this.$refs.refName来访问元素或子组件的实例
<p ref="p">Hello</p>
<children ref="children"></children>
this.$refs.p
this.$refs.children
this.$refs介绍
this.$refs是一个对象,持有当前组件中注册过 ref特性的所有 DOM 元素和子组件实例
注意: $refs只有在组件渲染完成后才填充,在初始渲染的时候不能访问它们,并且它是非响应式的,因此不能用它在模板中做数据绑定
注意:
当ref和v-for一起使用时,获取到的引用将会是一个数组,包含循环数组源
<template>
<div>
<div ref="myDiv" v-for="(item, index) in arr" :key="index">{{item}}</div>
</div>
</template>
<script>
export default {
data() {
return {
arr: ['one', 'two', 'three', 'four']
}
},
mounted() {
console.log(this.$refs.myDiv)
},
methods: {}
}
</script>
<style lang="sass" scoped>
</style>
实例(通过ref特性调用子组件的方法)
【1】子组件code:
<template>
<div>{{msg}}</div>
</template>
<script>
export default {
data() {
return {
msg: '我是子组件'
}
},
methods: {
changeMsg() {
this.msg = '变身'
}
}
}
</script>
<style lang="sass" scoped></style>
【2】父组件code:
<template>
<div @click="parentMethod">
<children ref="children"></children>
</div>
</template>
<script>
import children from 'components/children.vue'
export default {
components: {
children
},
data() {
return {}
},
methods: {
parentMethod() {
this.$refs.children //返回一个对象
this.$refs.children.changeMsg() // 调用children的changeMsg方法
}
}
}
</script>
<style lang="sass" scoped></style>
总结
来源:https://blog.csdn.net/qq_38128179/article/details/88876060


猜你喜欢
- os.Rename()这个函数的原型是func Rename(oldname, newname string) error,输入的是旧文件名
- 前言:前面的一章我们展示了选择结构的三种基本形式,并给出了实例演示,但是大家在编写代码过程中仍然要注意一些细节,尤其是代码块的缩进,这对if
- 本文实例讲述了Python基于递归实现电话号码映射功能。分享给大家供大家参考,具体如下:问题电话按键上面的每个数字都对应着几个字母,如果按下
- 安装并导入模块打开命令行窗口,输入:pip install -i https://mirrors.aliyun.com/pypi/simpl
- SQL SERVER数据库用datetime类型的时候 如果插入NULL,没有问题 如果插入空串"",就会默认1900-
- 在计算机中,数据的查找方式与其存储方式关系密切。试想一下,如果图书馆中书籍杂乱无章的存放,那么要想找到心仪的书籍将会非常困难。为此,人们常常
- 本文实例讲述了php实现图片转换成ASCII码的方法。分享给大家供大家参考。具体如下:php图片转换成ASCII码,转换后可以直接通过字符串
- python共现矩阵实现最近在学习python词库的可视化,其中有一个依据共现矩阵制作的可视化,感觉十分炫酷,便以此复刻。项目背景本人利用爬
- 相信有很多人有用程序向Excel导数据的需求, 且做过. 一般导出一些文本数据是很方便的, 可选方法很多, 比如拼接文本字符串存.cvs格式
- 前言分享一下最近在学习Django过程中,遇到和解决的一些有趣的方法和问题一、Django是什么?Django也不用在过多的去介绍了。使用p
- 一、概述单机Mysql8数据库服务器运行过程中突然断电,导致数据库崩溃,无法重启。二、查找原因查看mysql运行错误日志:WIN-SOTMI
- 如下所示:#-*- encoding:utf-8 -*-import csvimport sys,osimport pymysql def
- 系统中对Razor的支持包括两部分,其中之一就是自定义RazorViewEngine一、自定义RazorViewEngine在Global.
- Vue-router二级路由跳转另一条路由下的子级实验项目中,在一个 /list/user 列表中,当点击某一条时,需要跳转到 /detai
- 前提:安装xhtml2pdf https://pypi.python.org/pypi/xhtml2pdf/下载字体:微软雅黑;待转换的文件
- 1.什么是JWTJWT(JSON Web Token)是一个非常轻巧的规范,这个规范允许我们使用JWT在用户和服务器之间传递安全可靠的信息,
- 简介:Mysql数据库按时间点恢复实战对于任何一家企业来讲,数据都是最宝贵的财富。如何保护数据完整性,数据不受损坏,在发生故障时,如何保住数
- 使用 Django 或 Flask 这种框架开发 web app 的时候一般都会用内建服务器开发和调试程序,等程序完成后再移交到生产环境部署
- 介绍Redis是一个开源的基于内存也可持久化的Key-Value数据库,采用ANSI C语言编写。它拥有丰富的数据结构,拥有事务功能,保证命
- 时间差函数TIMESTAMPDIFF、DATEDIFF的用法我们在写sql语句,尤其是存储过程中,会频繁用到对于日期、时间的比较和判断,那么