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 导航守卫和axios拦截器有哪些区别
Dec 19 Vue.js
vue 页面跳转的实现方式
Jan 12 Vue.js
vue实现验证用户名是否可用
Jan 20 Vue.js
vue实现简易计算器功能
Jan 20 Vue.js
Vite和Vue CLI的优劣
Jan 30 Vue.js
vue项目两种方式实现竖向表格的思路分析
Apr 28 Vue.js
如何使用vue3打造一个物料库
May 08 Vue.js
详解vue中v-for的key唯一性
May 15 Vue.js
vue使用节流函数的踩坑实例指南
May 20 Vue.js
vue-cropper插件实现图片截取上传组件封装
May 27 Vue.js
关于vue-router-link选择样式设置
Apr 30 Vue.js
vue css 相对路径导入问题级踩坑记录
Jun 05 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
Windows下的PHP5.0安装配制详解
2006/09/05 PHP
社区(php&amp;&amp;mysql)一
2006/10/09 PHP
PHP函数常用用法小结
2010/02/08 PHP
phpMyAdmin 链接表的附加功能尚未激活问题的解决方法(已测)
2012/03/27 PHP
教你如何使用php session
2013/10/28 PHP
PHP中获取时间的下一周下个月的方法
2014/03/18 PHP
php获取网卡的MAC地址支持WIN/LINUX系统
2014/04/30 PHP
最新最全PHP生成制作验证码代码详解(推荐)
2016/06/12 PHP
PHP微信开发之有道翻译
2016/06/23 PHP
PHP框架laravel的.env文件配置教程
2017/06/07 PHP
php设计模式之适配器模式原理、用法及注意事项详解
2019/09/24 PHP
js onkeypress与onkeydown 事件区别详细说明
2012/12/13 Javascript
js 取时间差去掉周六周日实现代码
2012/12/25 Javascript
jQuery bxCarousel实现图片滚动切换效果示例代码
2013/05/15 Javascript
jQuery实现表单提交时判断的方法
2014/12/13 Javascript
JS实现网页右侧带动画效果的伸缩窗口代码
2015/10/29 Javascript
jQuery简单实现仿京东分类导航层效果
2016/06/07 Javascript
将jquery.qqFace.js表情转换成微信的字符码
2017/12/01 jQuery
Vue组件通信之Bus的具体使用
2017/12/28 Javascript
vue.js中$set与数组更新方法
2018/03/08 Javascript
JS 逻辑判断不要只知道用 if-else 和 switch条件判断(小技巧)
2020/05/27 Javascript
webpack5 联邦模块介绍详解
2020/07/08 Javascript
vue-preview动态获取图片宽高并增加旋转功能的实现
2020/07/29 Javascript
JavaScript 闭包的使用场景
2020/09/17 Javascript
聊聊vue 中的v-on参数问题
2021/01/29 Vue.js
[04:52]2015国际邀请赛LGD战队晋级之路
2015/08/14 DOTA
python脚本实现查找webshell的方法
2014/07/31 Python
python登录pop3邮件服务器接收邮件的方法
2015/04/30 Python
详解在Python的Django框架中创建模板库的方法
2015/07/20 Python
Django1.9 加载通过ImageField上传的图片方法
2018/05/25 Python
使用Python发现隐藏的wifi
2020/03/04 Python
python操作redis数据库的三种方法
2020/09/10 Python
Python 生成短8位唯一id实战教程
2021/01/13 Python
详解canvas绘制网络字体几种方法
2019/08/27 HTML / CSS
解决go在函数退出后子协程的退出问题
2021/04/30 Golang
教你用Python+selenium搭建自动化测试环境
2021/06/18 Python