详解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 相关文章推荐
在 IE 中调用 javascript 打开 Excel 表
Dec 21 Javascript
Javascript 类与静态类的实现
Apr 01 Javascript
Node.js模拟浏览器文件上传示例
Mar 26 Javascript
jQuery学习总结之jQuery事件
Jun 30 Javascript
Ionic2系列之使用DeepLinker实现指定页面URL
Nov 21 Javascript
JS使用面向对象技术实现的tab选项卡效果示例
Feb 28 Javascript
javascript实现数据双向绑定的三种方式小结
Mar 09 Javascript
原生JS发送异步数据请求
Jun 08 Javascript
jQuery发请求传输中文参数乱码问题的解决方案
May 22 jQuery
基于vue.js中关于下拉框的值默认及绑定问题
Aug 22 Javascript
小程序rich-text组件如何改变内部img图片样式的方法
May 22 Javascript
JavaScript中变量提升和函数提升的详解
Aug 07 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开发框架Laravel数据库操作方法总结
2014/09/03 PHP
PHP多线程编程之管道通信实例分析
2015/03/07 PHP
php tpl模板引擎定义与使用示例
2019/08/09 PHP
解决laravel-admin 自己新建页面里 js 需要刷新一次的问题
2019/10/03 PHP
div移动 输入框不能输入的问题
2009/11/19 Javascript
js 控制下拉菜单刷新的方法
2013/03/03 Javascript
jquery 提示信息显示后自动消失的具体实现
2013/12/18 Javascript
JavaScript中的alert()函数使用技巧详解
2014/12/29 Javascript
JS+CSS实现实用的单击输入框弹出选择框的方法
2015/02/28 Javascript
详细解读AngularJS中的表单验证编程
2015/06/19 Javascript
js实现具有高亮显示效果的多级菜单代码
2015/09/01 Javascript
jquery点击缩略图切换视频播放特效代码分享
2015/09/15 Javascript
jquery checkbox的相关操作总结
2016/10/17 Javascript
JS中页面与页面之间超链接跳转中文乱码问题的解决办法
2016/12/15 Javascript
jquery+html仿翻页相册功能
2016/12/20 Javascript
jQuery的三种bind/One/Live/On事件绑定使用方法
2017/02/23 Javascript
基于Vuex无法观察到值变化的解决方法
2018/03/01 Javascript
bootstrap中selectpicker下拉框使用方法实例
2018/03/22 Javascript
Express本地测试HTTPS的示例代码
2018/06/06 Javascript
详解如何使用router-link对象方式传递参数?
2019/05/02 Javascript
详解JavaScript之Array.reduce源码解读
2020/11/01 Javascript
[40:03]Liquid vs Optic 2018国际邀请赛淘汰赛BO3 第一场 8.21
2018/08/22 DOTA
python常用web框架简单性能测试结果分享(包含django、flask、bottle、tornado)
2014/08/25 Python
Python实现的简单发送邮件脚本分享
2014/11/07 Python
Python中的下划线详解
2015/06/24 Python
Python基于Hypothesis测试库生成测试数据
2020/04/29 Python
html5 移动端视频video的android兼容(去除播放控件、全屏)
2020/03/26 HTML / CSS
诚信承诺书范文
2014/03/27 职场文书
小露珠教学反思
2014/04/30 职场文书
拒绝黄毒毒宣传标语
2014/06/26 职场文书
小学安全工作汇报材料
2014/08/19 职场文书
2014年重阳节老干部座谈会局领导发言稿
2014/09/25 职场文书
2014民事授权委托书范本
2014/09/29 职场文书
简单谈谈Python面向对象的相关知识
2021/06/28 Python
排查并解决MySQL生产库内存使用率高的报警
2022/04/11 MySQL
ECharts transform数据转换和dataZoom在项目中使用
2022/12/24 Javascript