1. 程式人生 > 程式設計 >詳解Vue的ref特性的使用

詳解Vue的ref特性的使用

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

從上圖中我們很容易發現
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>

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。