1.安装mitt:

npm install mitt -S

2.使用方法:

main.ts

import { createApp } from 'vue'
import App from './App.vue'
import mitt from 'mitt'const Mit = mitt()//TypeScript注册
// 由于必须要拓展ComponentCustomProperties类型才能获得类型提示
declare module "vue" {export interface ComponentCustomProperties {$Bus: typeof Mit}
}const app = createApp(App)//Vue3挂载全局API
app.config.globalProperties.$Bus = Mitapp.mount('#app')

子组件组件:A.vue == > 派发 $emit

<template><div>我是A组件<button @click="emit">emit</button></div>
</template>
<script setup lang='ts'>import {getCurrentInstance} from 'vue'const instance = getCurrentInstance()const emit = () => {instance?.proxy?.$Bus.emit('on-click','hello world')}
</script>
<style scoped>
</style>

子组件组件:B.vue == > 监听 $on

<template><div>我是B组件 ==> {{ getStr }}</div>
</template>
<script setup lang='ts'>import { ref } from 'vue'import { getCurrentInstance } from 'vue'const getStr = ref<unknown>('');const instance = getCurrentInstance()instance?.proxy?.$Bus.on('on-click', (str) => {console.log(str)getStr.value = str})
</script>
<style scoped>
</style>

父页面:

<template><div><A /><B /></div>
</template>
<script setup lang='ts'>import { ref } from 'vue'import A from './A.vue'import B from './B.vue'
</script>
<style scoped>
</style>

3.通过mitt传多条数据:

子组件组件:A.vue == > 派发多个

<template><div>我是A组件<button @click="emit">emit</button></div>
</template>
<script setup lang='ts'>import {getCurrentInstance} from 'vue'const instance = getCurrentInstance()const emit = () => {instance?.proxy?.$Bus.emit('on-click1','hello')instance?.proxy?.$Bus.emit('on-click2','world')}
</script>
<style scoped>
</style>

子组件组件:B.vue == > 监听多个 $on('*')

<template><div>我是B组件 ==> {{ getStr1 }} - {{getStr2}}</div>
</template>
<script setup lang='ts'>import { ref } from 'vue'import { getCurrentInstance } from 'vue'const getStr1 = ref<unknown>('');const getStr2 = ref<unknown>('');const instance = getCurrentInstance()instance?.proxy?.$Bus.on('*', (type,str) => {console.log(type,str)if(type == 'on-click1'){getStr1.value = str}if(type == 'on-click2'){getStr2.value = str}})
</script>
<style scoped>
</style>

父页面:

<template><div><A /><B /></div>
</template>
<script setup lang='ts'>import { ref } from 'vue'import A from './A.vue'import B from './B.vue'
</script>
<style scoped>
</style>

移除监听事件(off)

vue3 - 19.Mitt兄弟组件传参传值相关推荐

  1. vue组件间通信传递数据的四种方式(路由传参、父子组件传参、兄弟组件传参、深层次传参)

    前言: vue组件间通信对于经常来写vue的伙伴来说应该是很轻松的,对于一些刚入门的伙伴来说可能就有些迷茫,感觉方式有很多种,但是总结起来又不知道应该怎么说,在下面的文章中,我结合自己的开发过程中经常 ...

  2. 【Vue3】第十四部分 父子组件传参

    [Vue3]第十四部分 父子组件传参 文章目录 [Vue3]第十四部分 父子组件传参 14. 父子组件传参 14.1 父传子(props) 14.2 子传父(emit) 14.3 子传父(ref) 总 ...

  3. VUE3 之 组件传参

    目录 1. 概述 2. 组件传参 3. 综述 4. 个人公众号 1. 概述 韦奇定律告诉我们:大部分人都很容易被别人的话所左右,从而开始动摇.怀疑,最终迷失自我.因此我们要努力的坚定信念,相信自己,才 ...

  4. vue3子组件给父组件传参

    子组件传参: const emit = defineEmits(['自定义事件名字A']) // 给父组件传参 emit('自定义事件名字A',数据) 父组件接收参数: <子组件标签名 @自定义 ...

  5. VUE父子组件之间的传值,以及兄弟组件之间的传值;

    一.Vue父子 组件之间传值 vue使用中,经常会用到组件,好处是: 1.如果有一个功能很多地方都会用到,写成一个组件就不用重复写这个功能了: 2.页面内容会简洁一些:方便管控: 子组件的传值是通过p ...

  6. Vue学习(组件传参)-学习笔记

    文章目录 Vue学习(组件传参)-学习笔记 父到子 子到父 父操作子-ref(类似于操作dom) 兄弟之间传参 Vue学习(组件传参)-学习笔记 父到子 Father:(index) <temp ...

  7. 【愚公系列】2022年10月 微信小程序-优购电商项目-⾃定义组件传参

    文章目录 前言 一.id和data-xxx传参 二.导航传值 三.父子组件传值 前言 组件传参是小程序中非常重要的一个功能,因为小程序大多都是组件形式存在的. 一.id和data-xxx传参 view ...

  8. 组件传参的终极版,事件车,父子传参的祖宗。

    如果简单的组件传参父子,子父传参就够了,但是如果兄弟之间传参就比较麻烦了, 事件车. 最后的还可以关闭 监听消息@click="$root.$off('msg1')

  9. Vue-admin工作整理(四):路由组件传参

    路由组件传参:如果在一个页面中,需要根据路由去获得参数,去对页面进行一些逻辑处理,首先可以通过this.$router来获取路由实例的参数,这样页面组件和路由就进行了耦合,为了进行分离,更大程度复用, ...

最新文章

  1. 张俊林:BERT和Transformer到底学到了什么 | AI ProCon 2019
  2. 2G---5G与未来天线技术
  3. Win7在IIS7中启用CGI
  4. Entity Framework 6 Recipes 2nd Edition(10-6)译 - TPT继承模型中使用存储过程
  5. 给UIButton添加背景图片
  6. 1041 Be Unique
  7. k8s的ingress使用
  8. c语言入门自学ppt,《C语言基础知识》PPT课件.ppt
  9. HTML5数据可视化第四弹:交互式地铁线路图
  10. 【广东大学生网络攻防大赛-WriteUp(非官方)】Reverse | pyre
  11. 『原创』老范的XML文档编辑程序——不是一般的山寨!(原创附程序)
  12. sm缩写代表什么意思_在嘉庚,这些缩写都是SM意思???
  13. 啊~北京~~啊~首都~
  14. C语言用梯形法求定积分
  15. Gartner:2018年前沿技术预测
  16. 一种逐样本的偏AUC优化框架
  17. 分析社交电商运营模式_电商代运营
  18. 长沙麻将APP(起手胡)
  19. java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar
  20. 基于“把点开活”的面试理论

热门文章

  1. rust反向遍历rev()
  2. 社会发展的方向——未来已来
  3. 狸猫浏览器火车票抢票功略
  4. 蓝桥杯 基础练习 报时助手(c++)
  5. Cisco和H3C交换设备 ARP病毒快速解决办法
  6. 神经网络的核心——寻优Wi权重系数
  7. 学术写作中的字体应用规则:斜体、罗马体、粗体与希腊字母的使用
  8. 缓冲(Buffer)与缓存(Cache)
  9. 5.16 使用Any表示任意值类型 [Swift原创教程]
  10. MOS管三个工作状态