首页 > 技术文章 > pubsub-js

yumibang 2022-03-18 11:40 原文

在vue中使用pubsub-js

1、安装
npm install --save pubsub-js
2、引用
方式1:全局注册
main.js中全局导入 pubsub-js
import pubsub from 'pubsub-js'
Vue.prototype.$pubsub = pubsub // 全局注册,使用方法为 this.$pubsub

方式2:组件内引用

import pubsub from 'pubsub-js'

3、使用(不同组件之间的传值)

全局注册的使用
传值:
 this.$pubsub.publish('sdata','data')
接值:
 this.$pubsub.subscribe('sdata',(msg,data) => {           //注意此处得使用箭头函数
  console.log(data)
}
组件引用的使用
订阅方组件
import pubsub from 'pubsub-js'
mounted(){ // 执行异常代码
 // 订阅消息
 pubsub.subscribe('deleteTodo',(msg,index)=>{
  this.deleteTodo(index) // 调用deleteTodo方法执行真正的业务逻辑
 });
},

发布方组件:
<script>
 import pubsub from 'pubsub-js'
 export default{
  methods: {
   handlerEnter(isEnter){
    if (isEnter) {
     this.bgColor = 'gray';
     this.isShow = true;
    } else {
     this.bgColor = 'white';
     this.isShow = false;
    }
   },
   deleteItem(){
    // 表示从this对象中取出todo,index,deleteTodo三个对象
    const {todo, index, deleteTodo} = this
    if (window.confirm(`确认删除${todo.title}吗?`)) {
     // 发布消息
     pubsub.publish('deleteTodo', index); //deleteTodo一定要与订阅方名称一样,index是通信的具体数据
    }
   }
  }
 }
</script>

推荐阅读