VUE組件之間多種通信方式

給大家介紹幾種VUE組件之間通信的方式,根據(jù)業(yè)務(wù)場(chǎng)景大家可以自行選擇。

1、通過$emit讓子組件與父通信
/*
 @ 子組件 btn.vue
*/

<template>
    <button @click="trigger">{{text}}</button>
</template>
<script>
  module.exports = {
     data () {
          return {}
     },
     props: {
         text: {
            type: [String, Number],
            default: '確定'
         }
      },
    methods: {
       trigger () {
          //觸發(fā)一個(gè)名字叫‘hello’的自定義事件, 并傳遞一個(gè)叫str的參數(shù)
          var str = 'hello word'
          this.$emit('hello', str)
       }
    }
  }
</script>
/*
監(jiān)聽自定義hello事件,并觸發(fā)helloWord方法
*/
<template>
    <btn @hello="helloWord"></btn>
</template>
<script>
  import btn from 'btn.vue'
  module.exports = {
     data () {
          return {}
     },
    methods: {
       helloWord(str) {
            console.log(str)
        }
    },
    components: { btn }
  }
</script>


2、通過ref獲取子組件實(shí)例(屬性、方法)
/*
 @ 子組件 btn.vue
*/

<template>
    <button @click="trigger">{{text}}</button>
</template>
<script>
  module.exports = {
     data () {
          return {
              text: '確定'
          }
     },
    methods: {
       _init () {
          this.text = 'hello word'
       }
    }
  }
</script>
/*
通過ref與子組件通信
*/
<template>
    <btn ref="btn"></btn>
</template>
<script>
  import btn from 'btn.vue'
  module.exports = {
     data () {
          return {}
     },
     created () {
        //獲取btn實(shí)例  
       var vueBtn =  this.$refs.btn
        
        //調(diào)用_init方法
        vueBtn._init()
    },
    components: { btn }
  }
</script>


2、通過一個(gè)空的VUE實(shí)例作為事件總代理,父與子、子與父、兄弟組件之間就可以通信了
/*
@ Event.js
*/
import Vue from 'vue'
export default new Vue()
/*
@ Event.js用法
*/
import Event from 'Event.js'

//事件監(jiān)聽
Event.$on('hello', (str)=> {
     console.log(str)
})

//事件觸發(fā)
var str = 'hello, word'
Event.$emit('hello', str)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 此文基于官方文檔,里面部分例子有改動(dòng),加上了一些自己的理解 什么是組件? 組件(Component)是 Vue.j...
    陸志均閱讀 3,954評(píng)論 5 14
  • 這篇筆記主要包含 Vue 2 不同于 Vue 1 或者特有的內(nèi)容,還有我對(duì)于 Vue 1.0 印象不深的內(nèi)容。關(guān)于...
    云之外閱讀 5,185評(píng)論 0 29
  • 在vue組件通信中其中最常見通信方式就是父子組件之中的通性,而父子組件的設(shè)定方式在不同情況下又各有不同。最常見的就...
    歲月如同馬匹閱讀 31,711評(píng)論 5 40
  • 本文首發(fā)于TalkingCoder,一個(gè)有逼格的程序員社區(qū)。轉(zhuǎn)載請(qǐng)注明出處和作者。 寫在前面 本文為系列文章,總共...
    Aresn閱讀 9,694評(píng)論 0 42
  • 昨天孩子出去去談微商的事情了,與媽媽說了情況。原來要兩千多的貨,現(xiàn)在雙11,一千多塊錢拿貨。孩子給我打電話。他說,...
    山東笑笑爸閱讀 216評(píng)論 0 0

友情鏈接更多精彩內(nèi)容