当前位置: 首页 > news >正文

Vue2 第十五节 组件间通信方式

1.组件的自定义事件

2.全局事件总线

3.消息订阅与发布

一.组件的自定义事件

1.1 绑定自定义事件

① 自定义事件就是一种组件间通信方式,用于子组件和父组件之间传递数据

② props来实现子组件给父组件传递数据

(1)先给父组件中绑定一个函数

(2)子组件中用props接收

(3)在子组件中调用这个方法

 ③ 绑定一个自定义事件

  第一种写法: 

(1)事件绑定(在父组件中绑定)

<Student v-on:atguigu="getStudentName" />

第二种写法:(更加灵活)

(1)使用ref的方式

<Student ref="student" />

④ 触发事件(在子组件中触发)

this.$emit('atguigu', this.name, 1, 2, 3)

⑤ 自定义事件只想触发一次:

第一种方式写法:

<Student @atguigu.once="getStudentName" />

第二种方式写法:

this.$refs.student.$once('atguigu', this.getStudentName)

1.2 解绑自定义事件

① 解绑一个自定义事件

this.$off('atguigu')

② 解绑多个自定义事件

this.$off(['atguigu', 'demo'])

③ 解绑所有的自定义事件

this.$off()

1.3 注意事项

① 通过 this.$ref.xxx.on('atguigu', 回调)绑定自定义事件时,回调要么配置在 methods 中,要么用箭头函数,否则 this 的指向会出问题,因为这个回调函数中的this指向的是触发这个事件的组件,并不是接收这个事件的组件

② 组件上也可以绑定原生DOM事件,需要使用native修饰符

<Student ref="student" @click.native="show" />

二. 全局事件总线

① 组件间通信的一种方式,适用于任意组件间通信

② 安装全局事件总线

new Vue({
beforeCreate(){
Vue.prototype.$bus = this
},
})

③ 事件总线接收数据

④ 事件总线解绑

 ⑤ 分发事件

三. 消息订阅与发布

① 消息订阅与发布是组件间通信的方式,适用于任意组件间通信

② 需要引入一个消息订阅与发布的第三方实现库:PubSubJS

下载: npm install -S pubsub-js

引入: import pubsub from 'pubsub-js'

③ 过程:订阅消息(对应绑定事件监听),  发布消息(分发事件),取消消息订阅(解绑事件监听)

代码示例

(1)订阅消息

  msg是消息名,data是数据

 (2)发布消息

 (3)取消订阅:最好在beforeDestroy钩子中取消订阅

http://www.lryc.cn/news/106790.html

相关文章:

  • maven的下载与安装
  • BroadcastChannel 实现浏览器tab无刷新通讯
  • 98. Python基础教程:try...except...finally语句
  • c语言实现简单的tcp客户端
  • RocketMQ详解及注意事项
  • 选择适合的项目管理系统,了解有哪些选择和推荐
  • linux基础命令-cd
  • MySQL数据库分库分表备份
  • PyTorch 中的累积梯度
  • 【面试精品】运维工程师需要具备的核心能力有哪些?
  • 微服务实战项目-学成在线-选课学习(支付与学习中心)模块
  • postman和jmeter的区别何在?
  • maven安装(windows)
  • 自学安全卷不动,是放弃还是继续?
  • Django实现音乐网站 ⑶
  • (13) Qt事件系统(two)
  • PHP的知识概要
  • JSON格式Python,Java,PHP等封装根据商品ID获取快手商品详情数据方法
  • 【ASP.NET MVC】MYSQL安装配置(4)
  • 前端框架学习-Vue(二)
  • sublime配置less的一些坑(1)
  • 解码“平台工程”,VMware 有备而来
  • 2023年第四届华数杯数学建模A题B题C题D题思路代码分析
  • java版直播商城平台规划及常见的营销模式+电商源码+小程序+三级分销+二次开发 bbc
  • windows物理机 上安装centos ,ubuntu,等多个操作系统的要点
  • FSDirectory 与 RAMDirectory
  • 小程序开发:开发框架与工具的使用指南
  • 【LeetCode】探索杨辉三角模型
  • Qt 中引入ffmpeg 动态库
  • 工程师是怎样对待开源 qt