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)
        }
    }
相关推荐
华仔啊几秒前
前端真的需要懂算法吗?该怎么样学习?
前端·javascript
笔尖的记忆4 分钟前
【前端架构和框架】react准备知识
前端·javascript
渣哥5 分钟前
从配置文件到 SpEL 表达式:@Value 在 Spring 中到底能做什么?
javascript·后端·面试
拜无忧14 分钟前
【小游戏】逃逸小球h5,登录背景,缺口逃逸小球多边形
前端
烛阴15 分钟前
Python 列表推导式:让你的代码更优雅、更高效
前端·python
文心快码BaiduComate16 分钟前
开工不累,双强护航:文心快码接入 DeepSeek-V3.2-Exp和 GLM-4.6,助你节后高效Coding
前端·人工智能·后端
快乐是一切19 分钟前
PDF底层格式之水印解析与去除机制分析
前端·数据结构
麋鹿原21 分钟前
Android Room 数据库之简单上手
前端·kotlin
一小池勺27 分钟前
改变上下文的 API:call, apply, bind
前端·javascript
三门39 分钟前
vue官网新读之后收获记录
前端