mitt

<template>
  <A></A>
  <B></B>
  </template>
 
  <script setup lang='ts'>
  import A from './A.vue'
  import B from './B.vue'
 
  // 兄弟组件之间的通信在Vue3中没有bus,通过插件mitt来完成兄弟之间的沟通
  </script>
 
  <style scoped lang='scss'>
 
  </style>
 
<template>
<div @click="emit">传过去B</div>
</template>

<script setup lang='ts'>
import { getCurrentInstance } from 'vue'
const instance = getCurrentInstance();

// 发送信息
const emit = () => {
  console.log("%c Line:10 🍿", "color:#ffdd4d");
    instance?.proxy?.$Bus?.emit('getMsg', 'hello world')
}
</script>

<style scoped lang='scss'>

</style>
 
<template>
<div>A传来的信息</div>
</template>

<script setup lang='ts'>
import { getCurrentInstance } from 'vue'
const instance = getCurrentInstance();

// 接受信息
// instance?.proxy?.$Bus?.on('getMsg', (msg: string) => {
//     console.log('A接收到B传来的信息', msg)
// })

// * 代表监听所有事件,type为事件名称
// instance?.proxy?.$Bus?.on('*', (type, msg: string) => {
//     console.log('A接收到B传来的信息',type, msg)
// })

const bus = (str: any) => {
  console.log('A接收到B传来的信息', str);
 
}
instance?.proxy?.$Bus?.on('getMsg', bus)
instance?.proxy?.$Bus?.off('getMsg', bus) // 取消监听
instance?.proxy?.$Bus.all.clear() // 取消全部监听

</script>

<style scoped lang='scss'>

</style>

posted on   ChoZ  阅读(3)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
历史上的今天:
2023-02-07 前端面试题目汇总

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示