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 + el-form 实现的多层循环表单验证
Nov 25 Vue.js
vue图片裁剪插件vue-cropper使用方法详解
Dec 16 Vue.js
Vue与React的区别和优势对比
Dec 18 Vue.js
Vue 修改网站图标的方法
Dec 31 Vue.js
vue.js watch经常失效的场景与解决方案
Jan 07 Vue.js
基于vuex实现购物车功能
Jan 10 Vue.js
Vue页面渲染中key的应用实例教程
Jan 12 Vue.js
vue项目两种方式实现竖向表格的思路分析
Apr 28 Vue.js
解读Vue组件注册方式
May 15 Vue.js
Vue3.0写自定义指令的简单步骤记录
Jun 27 Vue.js
Vue实现跑马灯样式文字横向滚动
Nov 23 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 中include()与require()的对比
2006/10/09 PHP
开源php中文分词系统SCWS安装和使用实例
2014/04/11 PHP
laravel框架学习笔记之组件化开发实现方法
2020/02/01 PHP
TP5框架实现上传多张图片的方法分析
2020/03/29 PHP
JavaScript flash复制库类 Zero Clipboard
2011/01/17 Javascript
深入理解JavaScript系列(13) This? Yes,this!
2012/01/18 Javascript
js jquery分别实现动态的文件上传操作按钮的添加和删除
2014/01/13 Javascript
form.submit()不能提交表单的错误原因及解决方法
2014/10/13 Javascript
jquery捕捉回车键及获取checkbox值与异步请求的方法
2015/12/24 Javascript
JS操作COOKIE实现备忘记录的方法
2016/04/01 Javascript
简述Angular 5 快速入门
2017/11/04 Javascript
微信小程序实现多宫格抽奖活动
2020/04/15 Javascript
axios取消请求的实践记录分享
2018/09/26 Javascript
Vue.Draggable拖拽功能的配置使用方法
2020/07/29 Javascript
微信小程序页面间跳转传参方式总结
2019/06/13 Javascript
node使用mysql获取数据库数据中文乱码问题的解决
2019/12/02 Javascript
js实现时分秒倒计时
2019/12/03 Javascript
vue 防止页面加载时看到花括号的解决操作
2020/11/09 Javascript
python中关于时间和日期函数的常用计算总结(time和datatime)
2013/03/08 Python
JavaScript实现一维数组转化为二维数组
2018/04/17 Python
pandas pivot_table() 按日期分多列数据的方法
2018/11/16 Python
python实现将多个文件分配到多个文件夹的方法
2019/01/07 Python
Python多继承以及MRO顺序的使用
2019/11/11 Python
django中ImageField的使用详解
2020/12/21 Python
谈谈对css属性box-sizing的了解
2017/01/04 HTML / CSS
Ralph Lauren拉夫·劳伦美国官网:带有浓郁美国气息的高品味时装品牌
2017/11/01 全球购物
软件测试题目
2013/02/27 面试题
医药专业应届毕业生求职信范文
2014/01/01 职场文书
促销活动策划方案
2014/01/12 职场文书
高三语文教学反思
2014/01/15 职场文书
财务人员的自我评价范文
2014/03/03 职场文书
事业单位绩效考核实施方案
2014/03/27 职场文书
食品安全处置方案
2014/06/14 职场文书
2015年检察院个人工作总结
2015/05/20 职场文书
军训心得体会范文(2016最新篇)
2016/01/11 职场文书
2016创先争优活动党员公开承诺书
2016/03/24 职场文书