详解Vue的ref特性的使用


Posted in Javascript onJanuary 24, 2020

一、ref的基本使用

ref的使用
<!-- `vm.$refs.p`将会是DOM结点 -->
<p ref="p">hello</p>

<!-- `vm.$refs.child`将会是子组件实例 -->
<child-component ref="child"></child-component>

如果在普通的 DOM 元素上使用,引用指向的就是DOM 元素如果用在子组件上,引用就指向组件实例

深入理解$refs

某组件的$refs含有该组件的所有ref,看下面的例子

<div id="app">
  <p ref="p">hello</p>
  <child-component ref="child"></child-component>
</div>

<script>
Vue.component('child-component', {
  template: '<h1>child-component </h1>'
})

let vm = new Vue({
  el: '#app'
})
</script>

详解Vue的ref特性的使用

从上图中我们很容易发现
vm.$refs返回了一个对象,这个对象内有两个成员,包含了vm实例的所有ref
vm.$refs.p是DOM 元素
vm.$refs.child是组件实例

二、实战:通过ref获取子组件data

看下面的例子

<div id="app">
  <counter ref="child1" @change="handleChange"></counter>
  <counter ref="child2" @change="handleChange"></counter>
  <div>{{sum}}</div>
</div>

<script>
// counter组件,实现每点击一次,自增1
Vue.component('counter', {
  template: '<h3 @click="handleClick">{{count}}</h3>',
  data() {
    return {
      count: 0
    }
  },
  methods: {
    handleClick() {
      this.count += 1;
      this.$emit('change')
    }
  }
})

let vm = new Vue({
  el: '#app',
  data: {
    sum: 0
  },
  methods: {
    handleChange() {
      this.sum = this.$refs.child1.count + this.$refs.child2.count // 使用refs获取子组件的数据
    }
  }
})
</script>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript contains和compareDocumentPosition 方法来确定是否HTML节点间的关系
Feb 04 Javascript
jQuery设置div一直在页面顶部显示的方法
Oct 24 Javascript
jsPDF导出pdf示例
May 02 Javascript
JS根据生日算年龄的方法
May 05 Javascript
jquery实现简单的banner轮播效果【实例】
Mar 30 Javascript
基于BootStrap环境写jQuery tabs插件
Jul 12 Javascript
thinkjs之页面跳转同步异步操作
Feb 05 Javascript
JavaScript数组去重的多种方法(四种)
Sep 19 Javascript
js canvas实现红包照片效果
Aug 21 Javascript
element-ui表格列金额显示两位小数的方法
Aug 24 Javascript
vue计算属性computed、事件、监听器watch的使用讲解
Jan 21 Javascript
JS+CSS实现动态时钟
Feb 19 Javascript
JavaScript对象原型链原理解析
Jan 22 #Javascript
Node.js学习之内置模块fs用法示例
Jan 22 #Javascript
ES6学习笔记之字符串、数组、对象、函数新增知识点实例分析
Jan 22 #Javascript
ES6学习笔记之let与const用法实例分析
Jan 22 #Javascript
vue中js判断长时间不操作界面自动退出登录(推荐)
Jan 22 #Javascript
Vue设置长时间未操作登录自动到期返回登录页
Jan 22 #Javascript
JavaScript设计模型Iterator实例解析
Jan 22 #Javascript
You might like
php调用dll的实例操作动画与代码分享
2012/08/14 PHP
Laravel如何同时连接多个数据库详解
2019/08/13 PHP
CL vs ForZe BO5 第五场 2.13
2021/03/10 DOTA
js 页面刷新location.reload和location.replace的区别小结
2009/12/24 Javascript
js中判断用户输入的值是否为空的简单实例
2013/12/23 Javascript
JS中FRAME的操作问题实例分析
2014/10/21 Javascript
jQuery不兼容input的change事件问题解决过程
2014/12/05 Javascript
js实现类似菜单风格的TAB选项卡效果代码
2015/08/28 Javascript
JavaScript中Form表单技术汇总(推荐)
2016/06/26 Javascript
使用jQuery5分钟快速搞定双色表格的简单实例
2016/08/08 Javascript
jquery遍历标签中自定义的属性方法
2016/09/17 Javascript
原生js实现查询天气小应用
2016/12/09 Javascript
vue通过路由实现页面刷新的方法
2018/01/25 Javascript
JavaScript轮播停留效果的实现思路
2018/05/24 Javascript
layui中table表头样式修改方法
2018/08/15 Javascript
监听element-ui table滚动事件的方法
2019/03/26 Javascript
ES6 class的应用实例分析
2019/06/27 Javascript
layui 对弹窗 form表单赋值的实现方法
2019/09/04 Javascript
Vue 中 a标签上href无法跳转的解决方式
2019/11/12 Javascript
基于javascript实现贪吃蛇经典小游戏
2020/04/10 Javascript
vue-drawer-layout实现手势滑出菜单栏
2020/11/19 Vue.js
[09:43]DOTA2每周TOP10 精彩击杀集锦vol.5
2014/06/25 DOTA
[06:06]2018DOTA2亚洲邀请赛主赛事第四日战况回顾 全明星赛欢乐上演
2018/04/07 DOTA
python有证书的加密解密实现方法
2014/11/19 Python
Windows下Python使用Pandas模块操作Excel文件的教程
2016/05/31 Python
django中的setting最佳配置小结
2017/11/21 Python
python实现视频分帧效果
2019/05/31 Python
详解Python 最短匹配模式
2020/07/29 Python
Python读写锁实现实现代码解析
2020/11/28 Python
会计求职信范文
2014/05/24 职场文书
住院医师规范化培训实施方案
2014/06/12 职场文书
领导干部作风建设自查报告
2014/10/23 职场文书
转学证明范本
2015/06/19 职场文书
2016春季小学开学寄语
2015/12/03 职场文书
go语言map与string的相互转换的实现
2021/04/07 Golang
python实现简单区块链结构
2021/04/25 Python