組件傳參(通用)

一、全局事件總線

1.第一步,安裝全局事件總線(main.js中)

new Vue({
    ......
    beforeCreate() {
        Vue.prototype.$bus = this //安裝全局事件總線,$bus就是當(dāng)前應(yīng)用的vm
    },
       ......
   }) 

2.第二步,使用全局事件總線
A組件想接收數(shù)據(jù),則在A組件中給$bus綁定自定義事件,事件的回調(diào)留在A組件自身。
A組件:

<script>
 <!--提供數(shù)據(jù)-->
    this.$bus.$emit('xxxx',數(shù)據(jù))
</script>

B組件:

<!--接收數(shù)據(jù)-->
mounted() {
        this.$bus.$on('xxxx',this.demo)
      },
<!--解綁事件-->
beforeDestroy() {
            this.$bus.$off('hello')
        }

實(shí)例:


image.png

image.png

二、消息訂閱與發(fā)布(在React中框架中用的較多,vue用的較少)

1.第一步,安裝pubsub:npm i pubsub-js
2.第二步,引入(子組件): import pubsub from 'pubsub-js'
3.第三步,接收數(shù)據(jù):A組件想接收數(shù)據(jù),則在A組件中訂閱消息,訂閱的回調(diào)留在A組件自身。
4.代碼實(shí)現(xiàn):
A組件:

import pubsub from 'pubsub-js'
mounted() {
        this.pid = pubsub.subscribe('xxx',this.demo) //訂閱消息
      }

B組件:

import pubsub from 'pubsub-js'
 <!--提供數(shù)據(jù)-->
pubsub.publish('xxx',數(shù)據(jù)),
<!--取消訂閱-->
beforeDestroy() {
            pubsub.unsubscribe(this.pubId)
        },

實(shí)例:


image.png

image.png
?著作權(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)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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