详解Vue的ref特性的使用

作者:bluesboneW 时间:2024-06-07 15:23:02 

一、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>

来源:https://segmentfault.com/a/1190000021643481

标签:Vue,ref
0
投稿

猜你喜欢

  • Oracle 11g数据库安装与卸载的方法图解

    2024-01-22 19:54:15
  • 在Pandas中DataFrame数据合并,连接(concat,merge,join)的实例

    2022-01-10 00:11:57
  • Python学习小技巧之利用字典的默认行为

    2021-10-10 23:48:29
  • 你需要知道的CSS3 动画技术[译]

    2009-12-30 17:02:00
  • MySQL 中这么多索引该怎么选择

    2024-01-17 12:58:54
  • 由浅入深讲解MySQL数据库索引的选择性

    2008-12-17 15:06:00
  • JavaScript图片放大镜效果

    2009-10-19 22:15:00
  • Python封装shell命令实例分析

    2022-03-11 13:39:37
  • 最常用的12种设计模式小结

    2024-04-29 13:17:45
  • Python列表元素删除和remove()方法详解

    2023-04-07 08:48:54
  • mysql共享锁与排他锁用法实例分析

    2024-01-20 15:15:26
  • Python实现获取命令行输出结果的方法

    2023-04-23 09:34:13
  • python实习总结(yeild,async,azwait和协程)

    2021-06-16 20:40:45
  • 详解Python中for循环的使用方法

    2023-06-12 10:53:19
  • Python struct.unpack

    2023-10-14 21:29:56
  • oracle 函数

    2010-07-23 13:06:00
  • Django基础知识 web框架的本质详解

    2023-03-23 17:38:01
  • PyQT5 QTableView显示绑定数据的实例详解

    2023-09-09 19:40:40
  • Python使用smtp和pop简单收发邮件完整实例

    2022-01-07 05:48:40
  • 详解Django 时间与时区设置问题

    2021-02-19 03:08:42
  • asp之家 网络编程 m.aspxhome.com