Vue消息订阅与发布

引入第三方库pubsub.js:

java 复制代码
npm i pubsub-js

Student.vue

javascript 复制代码
import pubsub from 'pubsub-js'
javascript 复制代码
 methods:{
    sendStudentName(){
      // this.$bus.$emit('hello',this.name)
      pubsub.publish('hello',666)
    }
  },

School.vue

javascript 复制代码
import pubsub from 'pubsub-js'
javascript 复制代码
 mounted() {
    // console.log("school",this.x)
/*    this.$bus.$on('hello',(data)=>{
      console.log('我是school组件,收到了数据',data)
    })*/
    this.pubId = pubsub.subscribe('hello',function (msgName,data){
      console.log('有人发布了hello消息,hello消息的回调执行了',msgName,data)
    })
  },
  beforeDestroy() {
    // this.$off('hello')
    pubsub.unsubscribe(this.pubId)
  },
}

TodoList案例使用消息订阅实现删除功能:

App.vue:

javascript 复制代码
import pubsub from 'pubsub-js'
javascript 复制代码
 mounted() {
    this.$bus.$on('checkTodo',this.checkTodo)
    this.pubId = pubsub.subscribe('deleteTodo',this.deleteTodo)
  },
  beforeDestroy() {
    this.$bus.$off('checkTodo')
    pubsub.unsubscribe(this.pubId)
  }
}

MyItem.vue:

javascript 复制代码
import pubsub from 'pubsub-js'
javascript 复制代码
  methods:{
    //勾选or取消勾选
    handleCheck(id){
      //通知App组件将对应的todo对象的done值取反
      // this.checkTodo(id)
      this.$bus.$emit('checkTodo',id)
    },
    //删除
    handleDelete(id){
        if (confirm('确定删除吗')){  //confirm根据用户的交互来决定到底是布尔值为真还是为假,点击确定为真,点击取消为假
          // this.deleteTodo(id)
            pubsub.publish('deleteTodo',id)
        }
    }
相关推荐
Verin7 分钟前
Next.js+Wagmi+rainbowkit构建以太坊合约交互模版
前端·web3·以太坊
KenXu10 分钟前
🚀 Cursor 1.0 重磅发布!AI代码编辑器迎来革命性升级
前端
凌辰揽月11 分钟前
Web后端基础(Maven基础)
前端·pycharm·maven
梦想CAD控件16 分钟前
(VUE3集成CAD)在线CAD实现焊接符号自定义
前端·javascript·vue.js
小华同学ai17 分钟前
千万别错过!这个国产开源项目彻底改变了你的域名资产管理方式,收藏它相当于多一个安全专家!
前端·后端·github
lyc23333317 分钟前
鸿蒙数据备份:让用户数据「稳如磐石」的3个核心要点💾
前端
Vowwwwwww20 分钟前
GIT历史存在大文件的解决办法
前端·git·后端
hxxp22 分钟前
使用Vue3开发商品管理器(一)
前端
lyc23333323 分钟前
鸿蒙延迟任务:让后台调度「聪明起来」的3个技巧⏰
前端
lyc23333324 分钟前
鸿蒙延迟任务:条件触发的「智能调度」指南⏱️
前端