【Vue3】兄弟组件传参

news2024/11/28 20:37:55

1. 借助父组件传参

A 组件派发一个事件,修改 flag 的值,先传递给父组件,然后由父组件传递给 B 组件。

缺点:必须由 App.vue 处理中间逻辑。

A.vue

<template>
  <div class="A">
    <h1>A组件</h1>
    <button @click="emitB">派发一个事件</button>
  </div>
</template>

<script setup lang="ts">
const emit = defineEmits(['on-click'])
let flag = false
const emitB = () => {
  flag = !flag
  emit('on-click', flag)
}
</script>

<style scoped>
.A {
  width: 200px;
  height: 200px;
  color: #fff;
  background: blue;
}
</style>

App.vue

<template>
  <div>
    <A @on-click="getFlag"></A>
    <B :flag="Flag"></B>
  </div>
</template>

<script setup lang="ts">
import A from './components/A.vue';
import B from './components/B.vue';
import { ref } from 'vue'
let Flag = ref<boolean>(false)
const getFlag = (flag:boolean) => {
  Flag.value = flag
}
</script>

<style scoped>

</style>

B.vue

<template>
  <div class="B">
    <h1>B组件</h1>
    {{ flag }}

  </div>
</template>

<script setup lang="ts">
type Props = {
  flag: boolean
}
defineProps<Props>()

</script>

<style lang="scss" scoped>
.B{
  width: 200px;
  height: 200px;
  color: #fff;
  background: red;
}
</style>

在这里插入图片描述

2. Event Bus

Event Bus(事件总线)是一种在Vue中实现组件间通信的模式。它使用了Vue实例作为中央的事件中心,允许任何组件注册监听器并触发事件。通过事件总线,兄弟组件之间可以进行解耦合的通信。

原理是利用了 JavaScript 设计模式的发布-订阅(Publish-Subscribe Pattern),然后由事件调度中心(Event Loop)进行处理。

// Bus.ts

type BusClass = {
  emit: (name: string) => void
  on: (name: string, callback: Function) => void
}

type PramsKey = string | number | symbol

type List = {
  [key: PramsKey]: Array<Function>
}

class Bus implements BusClass {
  list: List
  constructor() {
    this.list = {}
  }
  emit(name: string, ...args:Array<any>): void {
    let eventName: Array<Function> = this.list[name]
    eventName.forEach(fn =>{
      fn.apply(this, args)
    })
  }
  on(name: string, callback: Function): void {
    let fn:Array<Function> = this.list[name] || []
    fn.push(callback)
    this.list[name] = fn
  }
}
export default new Bus()
<!-- A.vue -->
<template>
  <div>
    <h1>A组件</h1>
    <button @click="emitB">派发一个事件</button>
    <hr>
  </div>
</template>

<script setup lang="ts">
import Bus from '../Bus'
let flag = false
const emitB = () =>{
  flag = !flag
  Bus.emit('on-click', flag)
}
</script>

<style scoped></style>
<!-- B.vue -->
<template>
  <div>
    <h1>B组件</h1>
    {{ Flag }}
    
  </div>
</template>

<script setup lang="ts">
import Bus from '../Bus'
import { ref } from 'vue'
let Flag = ref(false)
Bus.on('on-click', (flag:boolean)=> {
  Flag.value = flag
})

</script>

<style scoped></style>
<!-- App.vue -->
<template>
  <div>
    <A></A>
    <B></B>
  </div>
</template>

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

</script>

<style scoped></style>

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1055494.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Tomcat8 任意写文件PUT方法 (CVE-2017-12615)

Tomcat 任意写文件PUT方法 (CVE-2017-12615) 文章目录 Tomcat 任意写文件PUT方法 (CVE-2017-12615)1 在线漏洞解读:2 版本影响3 环境搭建4 漏洞复现4.1 访问4.2 POC攻击点4.2.1 直接发送以下数据包&#xff0c;然后shell将被写入Web根目录。4.2.2 访问是否通&#xff0c;可以访…

零基础Linux_10(进程)进程终止(main函数的返回值)+进程等待

目录 1. 进程终止 1.1 main函数的返回值 1.2 进程退出码和错误码 1.3 进程终止的常见方法 2. 进程等待 2.1 进程等待的原因 2.2 wait 函数 2.3 waitpid 函数 2.4 int* status参数 2.5 int options非阻塞等待 本篇完。 1. 进程终止 进程终止指的就是程序执行结束了&…

Linux命令之查看用户登录信息命令

一、命令简介 linux系统查看用户登录信息的命令有很多&#xff0c;包括w、who、whoami、users、last、lastb、lastlog、id、finger等。每个命令都可以查看当前登录的用户&#xff0c;但是又各有侧重点。w还可以查看用户正在执行的命令&#xff1b;who可以查看系统的启动时间&am…

Linux学习[21]账号与群组1---linux中/etc/passwd与/etc/shadow字段说明

文章目录 前言1. passwd字段说明2. shadow字段说明总结 前言 修改树莓派某个用户的权限到管理员权限的时候&#xff0c;涉及到了对/etc/passwd文件的修改&#xff0c;其中的字段具体含义当时也是模棱两可的&#xff0c;最近看了看相关书籍之后&#xff0c;这里做一个说明。 同…

AIGC Midjourney 机器人绘画案例演示

输入提示词后,点击生成图片即可。 根据描述生成了高清图像。 AIGC ChatGPT 职场案例60集, Power BI 商业智能 68集, 数据库Mysql8.0 54集 数据库Oracle21C 142集, Office, Python ,ETL Excel 2021 实操,函数,图表,大屏可视化 案例实战 http://t.csdn.cn/zBytu<

39 对称二叉树

对称二叉树 理解题意&#xff1a;如果同时满足下面的条件&#xff0c;两个树互为镜像&#xff1a;题解1 【栈】递归——DFS题解2 【队列】迭代——BFS 给你一个二叉树的根节点 root &#xff0c; 检查它是否轴对称。 提示&#xff1a; 树中节点数目在范围 [1, 1000] 内-100 &l…

Acwing 240. 食物链

Acwing 240. 食物链 题目描述思路讲解代码展示 题目描述 思路讲解 代码展示 #include <iostream>using namespace std;const int N 50010;int n, m; int p[N], d[N]; //p[]是并查集的father,d[]是距离int find(int x) {if (p[x] ! x) { //如果说x不是树根的话int t f…

【VIM】VIM配合使用的工具

6-1 课程总结-vim虐我千百遍&#xff0c;我待 vim 如初恋_哔哩哔哩_bilibili

吐槽挡不住iPhone15的热销,这就是苹果的实力,库克笑开怀

从某电商平台可以看到苹果的iPhone15Pro max的评论已高达200万条&#xff0c;对比之下竞争对手的某款手机评论仅仅只有200条&#xff0c;可以看出虽然一些人士指出该款手机狙击了iPhone15&#xff0c;而iPhone15在销售方面并未受到影响。 iPhone15在发布前后引发了诸多风波&…

lv5 嵌入式开发-9 信号机制(上)

目录 1 信号机制 2 信号的产生 3 常用信号 4 相关命令 4.1 信号相关命令 kill / killall 4.2 信号发送 – kill / raise 4.3 定时器函数相关函数 – alarm /ualarm/ pause 4.4 信号捕捉&#xff1a;设置信号响应方式 – signal /sigaction&#xff0c;闹钟实现 4.5 子…

面试官让手撕红黑树,我直接向他秀一手手撕map与set

文章目录 一、map与set的STL源码分析二、改造红黑树1.基本结构2.比较 三、迭代器1.STL源码分析2. 迭代器3. 与库里面的迭代器的差异 四、map的[]操作五、map与set完整代码 一、map与set的STL源码分析 我们首先可以观察到&#xff0c;在set和map中包含有如下的头文件 于是我们可…

28299-2012 结构用热轧翼板钢 课堂随笔

声明 本文是学习GB-T 28299-2012 结构用热轧翼板钢. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本标准规定了结构用热轧翼板钢的订货内容、尺寸、外形、重量及允许偏差、技术要求、试验方法、检 验规则、包装、标志和质量证明书等。 本…

Python绘图系统24:添加辅助坐标轴

文章目录 辅助坐标增减坐标轴时间轴**代码优化源代码 Python绘图系统&#xff1a; 前置源码&#xff1a; Python打造动态绘图系统&#x1f4c8;一 三维绘图系统 &#x1f4c8;二 多图绘制系统&#x1f4c8;三 坐 标 轴 定 制&#x1f4c8;四 定制绘图风格 &#x1f4c8;五 数据…

面试必考精华版Leetcode199. 二叉树的右视图

题目&#xff1a; 代码&#xff08;首刷看解析&#xff09;&#xff1a; class Solution { public:vector<int> rightSideView(TreeNode* root) {unordered_map<int,int> rightmostvalue;queue<TreeNode*> nodeQueue;queue<int> depthQueue;int maxDe…

上古神器:十六位应用程序 Debug 的基本使用

文章目录 参考环境上古神器 DebugBug 与 DebuggingDebugDebug 应用程序淘汰原因使用限制 DOSBox学习 Debug 的必要性DOSBox-X Debug 的基本使用命令 R查看寄存器的状态修改寄存器的内容 命令 D显示内存中的数据指定起始内存空间地址指定内存空间的范围 命令 A使用命令语法错误查…

第8章 Spring(二)

8.11 Spring 中哪些情况下,不能解决循环依赖问题 难度:★★ 重点:★★ 白话解析 有一下几种情况,循环依赖是不能解决的: 1、原型模式下的循环依赖没办法解决; 假设Girl中依赖了Boy,Boy中依赖了Girl;在实例化Girl的时候要注入Boy,此时没有Boy,因为是原型模式,每次都…

量化交易全流程(四)

本节目录 数据准备&#xff08;数据源与数据库&#xff09; CTA策略 数据源&#xff1a; 在进行量化分析的时候&#xff0c;最基础的工作是数据准备&#xff0c;即收集数据、清理数据、建立数据库。下面先讨论收集数据的来源&#xff0c;数据来源可分为两大类&#xff1a;免…

最新宽字节注入攻击和代码分析技术

点击星标&#xff0c;即时接收最新推文 本文选自《web安全攻防渗透测试实战指南&#xff08;第2版&#xff09;》 点击图片五折购书 宽字节注入攻击 宽字节注入攻击的测试地址在本书第2章。 访问id1&#xff0c;页面的返回结果如图4-51所示&#xff0c;程序并没有报错&#xff…

基于树莓派CM4制作img系统镜像批量制作TF卡

文章目录 前言1. 环境与工具2. 制作镜像3. 烧录镜像4. 总结 前言 树莓派烧录完系统做定制化配置比较费时间。在面对大批量的树莓派要配置&#xff0c;那时间成本是非常巨大的。第一次配置完可以说是摸着石头过河&#xff0c;但是会弄了以后再配置&#xff0c;都是一些重复性操…