vue3 组件传参

父子 props、$panrent
子父 emit自定义事件 $children $refs
兄弟 eventbus中央事件总线 vue3如果需要实现eventbus 安装第三方库mitt     
跨层级 provider inject
组件状态共享工具: vuex pinia

vue3 兄弟组件传参

原理:

通过第三个“东西”,一个往里写,一个读取。

方案:Mitt.js

Mitt.js 安装及使用方法
安装

包的官网:
https://www.npmjs.com/package/mitt

npm i mitt

在这里插入图片描述
封装:
在项目src目录下新建一个 bus文件夹,里面再建一个bus.ts文件,用来存放咱们的EventBusa事件总线。在 bus.ts 文件中,封装代码。

简单:

// 引入库
import mitt from "mitt"
// 创建事件总线
const emitter = mitt()
// 导出
export default emitter

复杂点


import mitt, { Emitter } from 'mitt';

// 类型
const emitter: Emitter<MittType> = mitt<MittType>();

// 导出
export default emitter;

组件示例
父组件

<template>
  <A />
  <hr>
  <B />
</template>

<script  lang="ts" setup>
import A from './components/A.vue'
import B from './components/B.vue'
</script>

子组件A

<template>
    <div>A</div>
    <button @click="onSendBtn">给B组件进行传值</button>
</template>

<script  lang="ts" setup>
// 引入EventBus总线文件
import emitter from '../bus/bus.ts'
function onSendBtn(){
	emitter.emit('urlparam',{url:"https://www.baidu.com"}}
</script>

子组件B

<template>
    <div>B</div>
</template>

<script  lang="ts" setup>
import { onBeforeUnmount, ref } from 'vue'
import emitter from '../bus/bus.ts'
// 创建响应式变量接收传参
 const url= ref('')
// 监听组件(兄弟组件)传参
// 第一个参数: 监听的连接名
// 第二个参数: 传递的数据
  emitter.on('urlparam', data => {
    console.log(data);
    url.value=data.url
 })
// 页面卸载时关闭EventBus总线的监听,不关闭会造成多次触发的问题
onBeforeUnmount(() => {
// 传入要关闭的连接
    emitter.off('urlparam')
})
</script>

相关推荐

  1. vue3组件

    2024-04-23 06:20:01       17 阅读
  2. Vue组件

    2024-04-23 06:20:01       36 阅读
  3. VUE父子组件问题

    2024-04-23 06:20:01       20 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-23 06:20:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-23 06:20:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-23 06:20:01       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-23 06:20:01       20 阅读

热门阅读

  1. C# 异步编程模式详解

    2024-04-23 06:20:01       16 阅读
  2. 图像哈希:DCT篇

    2024-04-23 06:20:01       19 阅读
  3. Gateway基本配置

    2024-04-23 06:20:01       14 阅读
  4. UniApp 项目中的生命周期详解:从诞生到逝去

    2024-04-23 06:20:01       19 阅读
  5. distance

    2024-04-23 06:20:01       47 阅读
  6. Slider重写 添加开始拖拽,结束拖拽以及点击事件

    2024-04-23 06:20:01       14 阅读
  7. Leetcode 1047:删除字符串中的所有相邻重复项

    2024-04-23 06:20:01       16 阅读
  8. 第23章 关键绩效指标

    2024-04-23 06:20:01       49 阅读