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-cli 创建模板项目
Nov 19 Vue.js
Vue 打包的静态文件不能直接运行的原因及解决办法
Nov 19 Vue.js
vue 在服务器端直接修改请求的接口地址
Dec 19 Vue.js
vue实现登录功能
Dec 31 Vue.js
vue+django实现下载文件的示例
Mar 24 Vue.js
如何使用vue3打造一个物料库
May 08 Vue.js
解决Vue+SpringBoot+Shiro跨域问题
Jun 09 Vue.js
vue实现锚点定位功能
Jun 29 Vue.js
Vue的列表之渲染,排序,过滤详解
Feb 24 Vue.js
Vue.js中v-bind指令的用法介绍
Mar 13 Vue.js
Axios代理配置及封装响应拦截处理方式
Apr 07 Vue.js
Vue OpenLayer测距功能的实现
Apr 20 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学习之PHP表达式
2006/10/09 PHP
PHP中文件上传的一个问题
2010/09/04 PHP
解析数组非数字键名引号的必要性
2013/08/09 PHP
php通过function_exists检测函数是否存在的方法
2015/03/18 PHP
php防止用户重复提交表单
2015/11/02 PHP
thinkPHP5框架路由常用知识点汇总
2019/09/15 PHP
php高性能日志系统 seaslog 的安装与使用方法分析
2020/02/29 PHP
function, new function, new Function之间的区别
2007/03/08 Javascript
JS动态添加option和删除option(附实例代码)
2013/04/01 Javascript
js判断浏览器类型的方法
2013/08/07 Javascript
js处理自己不能定义二维数组的方法详解
2014/03/03 Javascript
jquery禁用右键示例
2014/04/28 Javascript
Js实现滚动变色的文字效果
2014/06/16 Javascript
Jquery获取当前城市的天气信息
2016/08/05 Javascript
js中遍历Map对象的简单实例
2016/08/08 Javascript
基于jQuery实现滚动刷新效果
2017/01/09 Javascript
js中this对象用法分析
2018/01/05 Javascript
浅谈Vue2.0中v-for迭代语法的变化(key、index)
2018/03/06 Javascript
vue+webpack模拟后台数据的示例代码
2018/07/26 Javascript
快速了解Node中的Stream流是什么
2019/02/13 Javascript
详解vue中使用transition和animation的实例代码
2020/12/12 Vue.js
node脚手架搭建服务器实现token验证的方法
2021/01/20 Javascript
[01:06:12]VP vs NIP 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
python实现淘宝秒杀聚划算抢购自动提醒源码
2020/06/23 Python
Python 中包/模块的 `import` 操作代码
2019/04/22 Python
利用pyinstaller打包exe文件的基本教程
2019/05/02 Python
IE10 Error.stack 让脚本调试更加方便快捷
2013/04/22 HTML / CSS
AOP的定义以及作用
2013/09/08 面试题
介绍一下ICMP(Internet Control Message Protocol)Internet控制信息协议
2016/11/26 面试题
四年级数学教学反思
2014/02/02 职场文书
工作时间上网检讨书
2014/02/03 职场文书
设备售后服务承诺书
2014/05/30 职场文书
大学生国庆节65周年演讲稿范文
2014/09/25 职场文书
2014年重阳节老干部座谈会局领导发言稿
2014/09/25 职场文书
Python 装饰器(decorator)常用的创建方式及解析
2022/04/24 Python
python使用shell脚本创建kafka连接器
2022/04/29 Python