訊息訂閱與釋出
阿新 • • 發佈:2022-05-05
1. 先下載 cnpm i pubsub-js
釋出訊息 : 傳遞資料的
<template> <div class="student"> <h2>學生姓名:{{name}}</h2> <h2>學生性別:{{sex}}</h2> <button @click="sendStudentName">把學生名給School元件</button> </div> </template> <script> import pubsub from'pubsub-js' export default { name:'Student', data() { return { name:'張三', sex:'男', } }, mounted() { // console.log('Student',this.x) }, methods: { sendStudentName(){// 釋出訊息 pubsub.publish('hello',666) } }, } </script> <style lang="less" scoped> .student{ background-color: pink; padding: 5px; margin-top: 30px; } </style>
訂閱訊息 : 獲取資料的
<template> <div class="school"> <h2>學校名稱:{{name}}</h2> <h2>學校地址:{{address}}</h2> </div> </template> <script> import pubsub from 'pubsub-js' export default { name:'School', data() { return { name:'尚矽谷', address:'北京', } }, mounted() { //訂閱訊息 this.pubId = pubsub.subscribe('hello',(msgName,data)=>{ console.log(this) // console.log('有人釋出了hello訊息,hello訊息的回撥執行了',msgName,data) }) }, beforeDestroy() { pubsub.unsubscribe(this.pubId) }, } </script> <style scoped> .school{ background-color: skyblue; padding: 5px; } </style>
-
-
使用步驟:
-
安裝pubsub:
npm i pubsub-js
-
引入:
import pubsub from 'pubsub-js'
-
接收資料:A元件想接收資料,則在A元件中訂閱訊息,訂閱的回撥留在A元件自身。
methods(){
demo(data){ -
提供資料:
pubsub.publish('xxx',資料)
-
最好在beforeDestroy鉤子中,用
PubSub.unsubscribe(pid)
去
-