详解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 相关文章推荐
让FireFox支持innerText的实现代码
Dec 01 Javascript
JQuery+JS实现仿百度搜索结果中关键字变色效果
Aug 02 Javascript
Javascript限制网页只能在微信内置浏览器中访问
Nov 09 Javascript
基于jquery实现在线选座订座之影院篇
Aug 24 Javascript
json+jQuery实现的无限级树形菜单效果代码
Aug 27 Javascript
jquery ztree异步搜索(搜叶子)实践
Feb 25 Javascript
全面解析多种Bootstrap图片轮播效果
May 27 Javascript
Javascript字符串拼接小技巧(推荐)
Jun 02 Javascript
jquery选择器中的空格与大于号&gt;、加号+与波浪号~的区别介绍
Jun 24 Javascript
浅谈react-router@4.0 使用方法和源码分析
Jun 04 Javascript
VUE实现密码验证与提示功能
Oct 18 Javascript
详解微信小程序入门从这里出发(登录注册、开发工具、文件及结构介绍)
Jul 21 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异步执行的常用方式详解
2013/06/03 PHP
ThinkPHP验证码使用简明教程
2014/03/05 PHP
PHP aes (ecb)解密后乱码问题
2015/06/22 PHP
php类自动装载、链式操作、魔术方法实现代码
2017/07/23 PHP
修改发贴的编辑功能
2007/03/07 Javascript
JS URL传中文参数引发的乱码问题
2009/09/02 Javascript
多浏览器支持的右下角浮动窗口
2010/04/01 Javascript
JavaScript实现x秒后自动跳转到一个页面
2013/01/03 Javascript
原生js实现shift/ctrl/alt按键的获取
2013/04/08 Javascript
给文字加上着重号的JS代码
2013/11/12 Javascript
javascript随机之洗牌算法深入分析
2014/06/07 Javascript
jQuery的end()方法使用详解
2015/07/15 Javascript
javascript控制层显示或隐藏的方法
2015/07/22 Javascript
JavaScript+html5 canvas绘制的圆弧荡秋千效果完整实例
2016/01/26 Javascript
jQuery实现select模糊查询(反射机制)
2017/01/14 Javascript
用原生JS实现简单的多选框功能
2017/06/12 Javascript
nodejs中Express与Koa2对比分析
2018/02/06 NodeJs
javascript与PHP动态往类中添加方法对比
2018/03/21 Javascript
手写简单的jQuery雪花飘落效果实例
2018/04/22 jQuery
微信小程序授权登录及解密unionId出错的方法
2018/09/26 Javascript
VUE2.0+ElementUI2.0表格el-table实现表头扩展el-tooltip
2018/11/30 Javascript
基于NodeJS开发钉钉回调接口实现AES-CBC加解密
2020/08/20 NodeJs
Tensorflow 实现修改张量特定元素的值方法
2018/07/30 Python
Python中反射和描述器总结
2018/09/23 Python
python pandas模块基础学习详解
2019/07/03 Python
解决Pytorch 训练与测试时爆显存(out of memory)的问题
2019/08/20 Python
Python3批量创建Crowd用户并分配组
2020/05/20 Python
Django QuerySet查询集原理及代码实例
2020/06/13 Python
Python Django中间件使用原理及流程分析
2020/06/13 Python
css3弹性盒模型实例介绍
2013/05/27 HTML / CSS
HTML5播放实现rtmp流直播
2020/06/16 HTML / CSS
ASOS英国官网:英国在线时装和化妆品零售商
2017/05/19 全球购物
Bose加拿大官方网站:美国知名音响品牌
2019/03/21 全球购物
董事长秘书工作职责
2014/06/10 职场文书
机修车间主任岗位职责
2015/04/08 职场文书
送给小学生的暑假礼物!小学生必背99首古诗
2019/07/02 职场文书