Vue中ref和$refs的介绍以及使用方法示例


Posted in Vue.js onJanuary 11, 2021

前言

在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>

Vue中ref和$refs的介绍以及使用方法示例

实例(通过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>

总结

到此这篇关于Vue中ref和$refs的介绍以及使用的文章就介绍到这了,更多相关Vue中ref和$refs使用内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Vue.js 相关文章推荐
vue在图片上传的时候压缩图片
Nov 18 Vue.js
深入了解Vue3模板编译原理
Nov 19 Vue.js
vue打开其他项目页面并传入数据详解
Nov 25 Vue.js
vuex的数据渲染与修改浅析
Nov 26 Vue.js
Vue中computed和watch有哪些区别
Dec 19 Vue.js
vue中如何添加百度统计代码
Dec 19 Vue.js
vue实现购物车的小练习
Dec 21 Vue.js
Vue中的nextTick作用和几个简单的使用场景
Jan 25 Vue.js
开发一个封装iframe的vue组件
Mar 29 Vue.js
关于vue中如何监听数组变化
Apr 28 Vue.js
简单聊聊Vue中的计算属性和属性侦听
Oct 05 Vue.js
vue实现滑动解锁功能
Mar 03 Vue.js
vue实现防抖的实例代码
Jan 11 #Vue.js
Vuex实现简单购物车
Jan 10 #Vue.js
Vue实现一种简单的无限循环滚动动画的示例
Jan 10 #Vue.js
基于vuex实现购物车功能
Jan 10 #Vue.js
antdesign-vue结合sortablejs实现两个table相互拖拽排序功能
Jan 08 #Vue.js
vue-quill-editor插入图片路径太长问题解决方法
Jan 08 #Vue.js
vue编写简单的购物车功能
Jan 08 #Vue.js
You might like
随机头像PHP版
2006/10/09 PHP
php 中英文语言转换类
2011/09/07 PHP
php下载excel无法打开的解决方法
2013/12/24 PHP
PHP内部实现打乱字符串顺序函数str_shuffle的方法
2019/02/14 PHP
javascript学习笔记(十二) RegExp类型介绍
2012/06/20 Javascript
javascript为下拉列表动态添加数据项
2014/05/23 Javascript
javascript实现的右下角弹窗实例
2015/04/24 Javascript
js实现点击文本框显示日期选择器特效代码分享
2020/05/21 Javascript
jQuery+Ajax+PHP+Mysql实现分页显示数据实例讲解
2015/09/27 Javascript
js实现的星星评分功能函数
2015/12/09 Javascript
node.js请求HTTPS报错:UNABLE_TO_VERIFY_LEAF_SIGNATURE\的解决方法
2016/12/18 Javascript
node.js基于mongodb的搜索分页示例
2017/01/22 Javascript
vue实现图片滚动的示例代码(类似走马灯效果)
2018/03/03 Javascript
最后说说Vue2 SSR 的 Cookies 问题
2018/05/25 Javascript
解决select2在bootstrap modal中不能正常使用的问题
2018/08/09 Javascript
vue-cli webpack配置文件分析
2019/05/20 Javascript
vue实现公共方法抽离
2020/07/31 Javascript
[01:33]一分钟玩转DOTA2第三弹:DOTA2&DotA快捷操作大对比
2014/06/04 DOTA
[04:10]2016国际邀请赛中国区预选赛第二日TOP10精彩集锦
2016/06/28 DOTA
[00:29]2019完美世界全国高校联赛(秋季赛)总决赛海口落幕
2019/12/10 DOTA
基于scrapy的redis安装和配置方法
2018/06/13 Python
django认证系统实现自定义权限管理的方法
2018/07/16 Python
Python socket模块方法实现详解
2019/11/05 Python
Python字典中的值为列表或字典的构造实例
2019/12/16 Python
Python测试Kafka集群(pykafka)实例
2019/12/23 Python
python 密码学示例——凯撒密码的实现
2020/09/21 Python
Python在centos7.6上安装python3.9的详细教程(默认python版本为2.7.5)
2020/10/15 Python
支票、地址标签、包装纸和慰问卡:Current Catalog
2018/01/30 全球购物
英国乐购杂货:Tesco Groceries
2018/11/29 全球购物
UNIX文件系统常用命令
2012/05/25 面试题
学校群众路线专项整治方案
2014/10/31 职场文书
支行行长岗位职责
2015/02/15 职场文书
教师节晚会主持词
2015/06/30 职场文书
安全教育主题班会教案
2015/08/12 职场文书
银行大堂经理培训心得体会
2016/01/09 职场文书
公安纪律作风整顿心得体会
2016/01/23 职场文书