国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

vue進(jìn)階-消息的訂閱與發(fā)布

這篇具有很好參考價(jià)值的文章主要介紹了vue進(jìn)階-消息的訂閱與發(fā)布。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

??vue基礎(chǔ)學(xué)習(xí)-組件 介紹了嵌套組件間父子組件通過 props 屬性進(jìn)行傳參。子組件傳遞數(shù)據(jù)給父組件通過 $emit() 返回自定義事件,父組件調(diào)用自定義事件接收子組件返回參數(shù)。

??vue進(jìn)階-vue-route 介紹了路由組件傳參,兩種方式:params傳參query 傳參。

本章介紹組件間通信:?vue消息的訂閱與發(fā)布?

簡介

  • 消息的訂閱與發(fā)布(PubSub.js)適用于:任何組件間通信
  • PubSub 可以在 Vue 任意組件間進(jìn)行傳值,無需要進(jìn)行中間層層傳遞。
  • 使用的模式是觀察者模式:生產(chǎn)者拋出,消費(fèi)者接收。

1. 入門

1.1 安裝

npm i pubsub-js

1.2 引入 pubub

import pubsub from 'pubsub-js'

1.3 發(fā)布

pubsub.publish('消息名稱', 發(fā)布的數(shù)據(jù))

1.4 訂閱

pubsub.subscribe('消息名稱', 回調(diào)函數(shù))
  • subscribe()方法會返回訂閱消息對應(yīng)的 ID。
  • 回調(diào)函數(shù)接收兩個(gè)參數(shù),第一個(gè)參數(shù)為消息名稱,第二個(gè)參數(shù)為傳遞過來的數(shù)據(jù)。
  • 回調(diào)函數(shù),不建議使用普通匿名函數(shù),因?yàn)榈谌綆旌?vue 不一樣,不保證函數(shù)中的 this 指向 vue 實(shí)例或組件實(shí)例對象。建議使用箭頭函數(shù)或者 將普通函數(shù)寫在 methods 配置項(xiàng)中。

第一種方式:

mounted() {
	this.pid = pubsub.subscribe('xxx', (msgName, data)=>{...})
}

第二種方式:

methods: {
	demo(msgName, data){...}
},
mounted() {
	this.pid = pubsub.subscribe('xxx', this.demo)
}

1.5 取消訂閱

beforeDestroy() {
    pubsub.unsubscribe(this.pid)
}

beforeDestroy 鉤子函數(shù)中,調(diào)用pubsub.unsubscribe取消訂閱。

2. 示例

首先,我們先復(fù)習(xí)下嵌套組件間父子組件傳值。

??1、新增子組件 ComponentA

<template>
    This is ComponentA, title = {{title}}, userName = {{userName}}
</template>
<script>
export default {
    props: ['title','userName']
}
</script>

子組件通過 props: ['title','userName'] 顯式聲明它所接受的屬性 titleuserName。

??2、新增父組件 FuComponent

<template>
    <component-a :title="title" :userName="userName"></component-a>
</template>

<script>
import ComponentA from '@/components/ComponentA.vue'

export default {
    components: { ComponentA },
    data() {
        return {
            title: 'google',
            userName: 'Jack'
        }
    }
}
</script>

父組件在 data 中動態(tài)賦值 title、userName 。

??3、router/index.js配置路由

import { createRouter, createWebHistory } from "vue-router";

const routes = [
    {
        path: '/fuComponent',
        component: () => import("@/components/FuComponent.vue")
    }
]
const router = createRouter({
    history: createWebHistory(),
    routes
})
export default router

??4、App.vue 中使用路由

<template>
  <router-link to="/fuComponent">父子組件參數(shù)傳遞</router-link><br />
  <hr />
  <router-view></router-view>
</template>
<script setup>
 
</script>

??5、測試

vue進(jìn)階-消息的訂閱與發(fā)布,Vue,vue.js

3. 發(fā)布訂閱模式改造

??1、子組件 ComponentA 發(fā)布訂閱

vue進(jìn)階-消息的訂閱與發(fā)布,Vue,vue.js

<template>
    This is ComponentA, title = {{title}}, userName = {{userName}}
</template>

<script>
import pubsub from "pubsub-js";

export default {
    data() {
        return {
            title: '',
            userName: ''
        }
    },
    mounted() {
        this.pid = pubsub.subscribe('test', (msgName, data )=> {
            console.log('有人發(fā)布了 test , test 消息的回調(diào)執(zhí)行了', msgName, data);
            this.title = data.title;
            this.userName = data.userName;
        })
    },
    beforeDestroy() {
        pubsub.unsubscribe(this.pid)
    }
}
</script>

??2、新增父組件 FuComponent

vue進(jìn)階-消息的訂閱與發(fā)布,Vue,vue.js

<template>
  <component-a></component-a>
  <br />
  <button @click="send">點(diǎn)擊發(fā)布消息</button>
</template>

<script>
import ComponentA from '@/components/ComponentA.vue'
import pubsub from "pubsub-js";

export default {
    components: { ComponentA },
    methods: {
        send() {
            let sendData = {
                title: "google",
                userName: "Jack"
            };
            pubsub.publish("test", sendData);
        }
    }
};
</script>

??3、測試

??點(diǎn)擊訪問 “http://localhost:8080/fuComponent”
vue進(jìn)階-消息的訂閱與發(fā)布,Vue,vue.js

??點(diǎn)擊按鈕

vue進(jìn)階-消息的訂閱與發(fā)布,Vue,vue.js文章來源地址http://www.zghlxwxcb.cn/news/detail-595735.html

到了這里,關(guān)于vue進(jìn)階-消息的訂閱與發(fā)布的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Web前端 ---- 【vue】vue 組件傳值(props、全局事件總線、消息的訂閱與發(fā)布)

    Web前端 ---- 【vue】vue 組件傳值(props、全局事件總線、消息的訂閱與發(fā)布)

    目錄 前言 父子組件 父傳子 子傳父 全局事件總線 什么叫全局事件總線 如何創(chuàng)建全局事件總線 如何在組件上獲取到這個(gè)全局vc對象 最常用的創(chuàng)建全局事件總線 兄弟組件 消息訂閱與發(fā)布 安裝 使用 爺孫組件 在上篇文章我們介紹了父子組件之間的傳值通信,本文將介紹不僅限

    2024年02月05日
    瀏覽(53)
  • Vue2-全局事件總線、消息的訂閱與發(fā)布、TodoList的編輯功能、$nextTick、動畫與過渡

    Vue2-全局事件總線、消息的訂閱與發(fā)布、TodoList的編輯功能、$nextTick、動畫與過渡

    ??:高度自律即自由 更多Vue知識請點(diǎn)擊——Vue.js 一種組件間通信的方式,適用于任意組件間通信。通俗理解就是一個(gè)定義在所有組件之外的公共嘎達(dá),這個(gè)嘎達(dá)可以有vm或vc上的同款 $on、$off、$emit ,也可以讓所有組件都訪問到。要想實(shí)現(xiàn)這個(gè)事情,只能在 Vue.prototype 上添加

    2024年02月11日
    瀏覽(18)
  • RuoYi-Vue前后端分離搭建MQTT服務(wù)器實(shí)現(xiàn)消息訂閱、發(fā)布、數(shù)據(jù)存儲 (EMQX Windows10)最全,懶人操作

    RuoYi-Vue前后端分離搭建MQTT服務(wù)器實(shí)現(xiàn)消息訂閱、發(fā)布、數(shù)據(jù)存儲 (EMQX Windows10)最全,懶人操作

    1、在RuoYi-Vue項(xiàng)目的superVisualizationSys-common模塊下的pom.xml加入jar包依賴 3、在superVisualizationSys-commonsrcmainjavacomsuperVisualizationcommonutils目錄下新建mqtt文件夾,添加以下三個(gè)文件 注:項(xiàng)目報(bào)紅的地方可以按Alt+Enter鍵導(dǎo)包 下載路徑: https://www.emqx.io/zh/download ? 1.?在windows上安裝

    2024年02月15日
    瀏覽(34)
  • 使用Node.js連接和發(fā)布/訂閱MQTT消息

    Node.js是一種基于事件驅(qū)動的異步I/O服務(wù)器端JavaScript運(yùn)行環(huán)境,因?yàn)槠浞亲枞鸌/O和事件驅(qū)動模型,使得它非常適合處理大量并發(fā)請求的場景。MQTT是一種輕量級的消息傳遞協(xié)議,它是基于發(fā)布/訂閱模式的,適用于傳輸小量數(shù)據(jù),且具有低帶寬、低電量消耗和可靠性高等特點(diǎn)。這

    2024年02月06日
    瀏覽(20)
  • react---pubsub-js消息訂閱與發(fā)布

    react---pubsub-js消息訂閱與發(fā)布

    pubsub是一個(gè)用Javascript編寫的基于主題的發(fā)布/訂閱庫,適用于任意組件間的通信,需要先訂閱再發(fā)布 ,在組件即將卸載時(shí)鉤子函數(shù)中進(jìn)行取消訂閱。 1. 在線文檔: https://github.com/mroderick/PubSubJS 2. 下載: 【npm install?pubsub-js --save】 3. 使用 (1) import PubSub from \\\'pubsub-js\\\' // 引入 (2) Pub

    2024年02月08日
    瀏覽(26)
  • Spring Boot進(jìn)階(62):Redis魔法:用發(fā)布訂閱功能打造高效消息隊(duì)列!

    Spring Boot進(jìn)階(62):Redis魔法:用發(fā)布訂閱功能打造高效消息隊(duì)列!

    ? ? ? ? 話說,玩過MQ的同學(xué)可能都知道【發(fā)布訂閱】模式,不就是一種消息傳遞方式嘛;如果沒玩過,那也不打緊,下文我會簡單做個(gè)科普。但是對于Redis如何實(shí)現(xiàn)MQ的【發(fā)布訂閱】功能?這才是問題的關(guān)鍵,有的同學(xué)就說“壓根沒玩過呀!不造” ,哈哈,bug菌既然敢寫便有

    2024年02月09日
    瀏覽(28)
  • 學(xué)習(xí)SLAM:SLAM進(jìn)階(九)以激光點(diǎn)云賦色為例講述如何自定義ROS的消息格式并實(shí)現(xiàn)消息的訂閱與發(fā)布

    目錄 1 為什么需要自定義的ROS消息格式 1.1 簡介 1.2 ROS自定義消息格式的通用結(jié)構(gòu)

    2024年02月09日
    瀏覽(56)
  • vue2響應(yīng)式原理----發(fā)布訂閱模式

    vue2響應(yīng)式原理----發(fā)布訂閱模式

    很多人感覺vue2的響應(yīng)式其實(shí)用到了觀察者+發(fā)布訂閱。我們先來看一下簡單的發(fā)布訂閱的代碼: 從上面中發(fā)現(xiàn)一個(gè)重要的點(diǎn),發(fā)布者和訂閱者是根據(jù)key值來區(qū)分的,然后通過消息中心來中轉(zhuǎn)的,他們家是是實(shí)現(xiàn)不知道對方是誰。 而觀察者模式中觀察者是一開始就知道自己觀察

    2024年04月14日
    瀏覽(18)
  • 從Vue層面 - 解析發(fā)布訂閱模式和觀察者模式區(qū)別

    從Vue層面 - 解析發(fā)布訂閱模式和觀察者模式區(qū)別

    觀察者模式和發(fā)布訂閱模式作為日常開發(fā)中經(jīng)常使用到的模式,我一直不能做到很好的區(qū)分。最近在看Vue的源碼,里面設(shè)計(jì)到了觀察者模式,比較感興趣,就去學(xué)習(xí)了下,這里做個(gè)總結(jié)吧。 基于一個(gè) 事件中心 ,接收通知的對象是訂閱者,需要先訂閱某個(gè)事件,觸發(fā)事件的對

    2024年02月15日
    瀏覽(90)
  • Vue中信息訂閱與發(fā)布和配置代理服務(wù)器的使用和原理

    全局事件總線和信息訂閱與發(fā)布一樣都是實(shí)現(xiàn)任意組件的通信。常用的是全局事件總線 信息訂閱與發(fā)布借用第三方庫pubsub實(shí)現(xiàn)任意組件的通信 安裝pubsub 下列代碼為MyHeader組件訂閱了一份信息,MyFooter負(fù)責(zé)傳遞信息給MyHeader 觸發(fā)點(diǎn)擊事件發(fā)布信息給MyHeader 假設(shè)目前有兩個(gè)端口的

    2024年02月03日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包