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)
        }
    }
相关推荐
森叶31 分钟前
大前端开发——前端知识渐变分层讲解 & 利用金字塔原理简化前端知识体系
前端·webpack·electron
曹天骄33 分钟前
免费 Mock 图片 Mock 地址清单
javascript
源码集结号1 小时前
java智慧城管综合管理系统源码,前端框架:vue+element;后端框架:springboot;移动端:uniapp开发,技术前沿,可扩展性强
java·vue.js·spring boot·源代码·大数据分析·城管·电子办案
黄同学real1 小时前
常见的 CSS 知识点整理
前端·css
Nuyoah.2 小时前
《Vue3学习手记7》
javascript·vue.js·学习
oMMh2 小时前
使用C# ASP.NET创建一个可以由服务端推送信息至客户端的WEB应用(1)
前端·c#·asp.net
Huazzi.2 小时前
打造惊艳的渐变色下划线动画:CSS实现详解
前端·css
秋野酱2 小时前
基于Spring Boot+Vue 网上书城管理系统设计与实现(源码+文档+部署讲解)
vue.js·spring boot·后端
北方之mini鱼2 小时前
使用Construct开发一个HTML5小游戏究竟需要多长时间?
前端·html·html5
佬乔2 小时前
JWT-验证
java·服务器·前端