vue3组件之间通讯

news2024/11/15 12:18:39

1.  props,实现父组件向子组件通讯。

父组件 :对子组件属性绑定要通讯的数据。

子组件:通过defineProps来进行数据接收。

2.  emit,实现子组件向父组件通讯。

子组件:通过emit创建向父组件传递数据事件

父组件:通过自定义事件接收子组件传递数据。

3.mitt,实现任意组件之间通讯。

准备工作:安装mitt依赖包(npm i mitt),创建emitter.ts文件。

组件A(发送数据):通过emitter.emit绑定事件。

组件B(接收数据):通过emitter.on接收事件,取出数据。并在组件销毁时通过 emitter.off解绑事件。

4.v-mode,通过v-model实现原完成组件通讯(不推荐用,了解v-model实现流程)

v-model实现原理实际是通过属性绑定(父传子)和事件绑定(子传父)

html原始元素(input等)和 vue2中 v-model底层 属性名为:value 事件名为 @input

vue3中 v-mode 底层属性名为:modelValue 事件名为@update:modelValue ,update:modelValue中的属性名没有任何意义就是字符串

封装组件

5.attrs,通过attrs实现祖孙通讯(不推荐用,了解$attrs)

当父组件向子组件传递数据,在子组件中并未声明使用则数据会暂存到组件$attrs中,此时子组件可以通过v-bind="$attrs",将这些暂存数据传递给孙组件中。

父组件

子组件

孙组件

5.$ref和$parents,父组件通过$ref获取子组件实例,子组件通过$parents获取父组件实例。

组件通过defineExpose对外暴露要传递的数据,

父组件

<template>
    <div>
        04$refs
        {{ msg }}
        <p>{{ x }}</p>
        <button @click="chang1">查看子组件1数据</button>
        <button @click="chang2" style="margin-left: 10px;">查看子组件2数据</button>
        <button @click="chang3($refs)" style="margin-left: 10px;">获取所有子组件数据</button>
        <son1 ref="son1Ref"></son1>
        <son2 ref="son2Ref"></son2>
      
    </div>
</template>

<script setup>
import  son1 from './06$refs-$parents/son1.vue'
import  son2 from './06$refs-$parents/son2.vue'
import {ref} from 'vue'
let msg = ref('3')
let x = 10
let son1Ref = ref()
let son2Ref = ref()
function chang1(){
    //子组件需要暴露出具才能获取到
    console.log("我是父组件获取子组件数据和事件");
    console.log(son1Ref.value)
    console.log(son1Ref.value.a);
    console.log(son1Ref.value.b);
    son1Ref.value.changeData()
}
function chang2(){
    //子组件需要暴露出具才能获取到
    console.log(son2Ref.value)
}
function chang3(e){
    //获取所有子组件实例对象
    console.log(e);
}
defineExpose({msg,x})

</script>

子组件

6.provide和inject,父组件可以向后代任意组件进行通讯。

父组件通过provide传递数据,后代组件通过inject接收数据

父组件

子组件

7.slot,使用插槽进行父子组件通讯。

插槽分为:默认插槽,具名插槽,作用域插槽(父组件插槽内容使用子组件数据)

默认插槽

父组件

<div>
  <son>
     <h3>默认插槽</h3>           
  </son>
</div>

子组件

<div>
    <p>下面是默认插槽内容</p>
    <slot></slot>         
</div>

具名插槽

父组件

<div>
  <son>
     <template v-slot:s2>
         <h3>具名插槽</h3>
     </template>        
  </son>
</div>

子组件

<div>
    <p>下面是具名插槽内容</p>
    <slot name="s2"></slot>        
</div>

作用域插槽

父组件

 <son>
    <template v-slot="cars">
       <h2>我是作用域插槽</h2>
         <div v-for="item in cars.carList" :key="item.name">{{ item.name }}                                
         </div>
     </template>
 </son>

子组件

<div>
   <slot :carList="carList"></slot>
</div>

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

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

相关文章

Chromium编译指南2024 - Android篇:环境准备(二)

1.引言 在前面的章节中&#xff0c;我们详细介绍了编译 Chromium for Android 所需的系统和硬件要求。在确保您的开发环境符合这些基本要求后&#xff0c;接下来我们将重点讲解如何具体配置您的开发环境&#xff0c;以便顺利编译 Chromium。本篇文章将涵盖从更改软件源到安装基…

[matlab] 鲸鱼优化算法优化KNN分类器的特征选择

目录 引言 智能优化算法概述 智能优化算法在KNN特征选择中的应用 应用步骤 UCI数据集 鲸鱼优化算法 一、算法背景与原理 二、算法组成与步骤 三、算法特点与优势 四、应用与挑战 代码实现 鲸鱼优化算法 主程序 打印结果 引言 智能优化算法在优化KNN&#xff08;…

5、关于kali搭建vulhub

Vulhub是一个基于Docker和Docker-compose的漏洞靶场环境&#xff0c;所以搭建vulhub分三步&#xff1a; 1、安装docker 2、安装docker-compose 3、安装vulhub 一、安装步骤 1、安装docker 因为kali太久没用&#xff0c;所以需要先更新软件列表最新源 apt-get update 安装do…

C++ vector的基本使用

目录 1. vector的定义 2. 迭代器iterator的使用 3. vector空间增长问题 (1). size与capacity (2). empty与resize与reserve 4. vector的增删查改 (1) . push_back和pop_back (2). find与insert与erase (3). swap与operator[] 5. vector迭代器失效问题 (1). 改变空间 (…

爱玛电动车今年多次抽查不合格:营收增速放缓承压,拟50亿扩产能

《港湾商业观察》廖紫雯 7月26日&#xff0c;市场监管总局发布《2024年上半年电动自行车产品质量国家监督专项抽查结果情况通报》&#xff0c;爱玛电动车五次上榜。 除却一直以来被多次诟病的电动车产品质量问题外&#xff0c;业绩层面上&#xff0c;近两年数据来看&#xff…

从格斗项目的着装和格斗术,理解巴黎奥运会上的拳击、跆拳道、柔道、摔跤之间到底有什么区别?

文章目录 引言I 柔道着装格斗术II 摔跤装备“摔跤耳”格斗术:古典式摔跤和自由式摔跤III 跆拳道装备格斗术等级段位制(“十级九段制”)IV 拳击装备格斗术拳击手小结引言 8月1日巴黎,柔道女子-78公斤级比赛结束,意大利贝兰迪夺得金牌,以色列拉尼尔摘得银牌,中国选手马振昭和…

SAM-Med2D 大模型学习笔记(续):训练自己数据集

1、前言、数据集介绍 SAM-Med2D大模型介绍参考上文&#xff1a;第三章&#xff1a;SAM-Med2D大模型复现-CSDN博客 本文将使用SAM-Med2D大模型训练自己的数据集 关于SAM-Med2D大模型官方demo数据集的介绍上文已经介绍过&#xff0c;这里简单回顾下 其中data_demo为数据集的目…

你的工作环境,选对劳保鞋了吗?守护安全,从脚下开始!

在众多的工作场所中&#xff0c;我们穿梭于不同的工作环境&#xff0c;从繁忙的工厂车间到复杂的建筑工地&#xff0c;再到需要精细操作的实验室……每一步都承载着对安全的期许和对效率的追求。但你是否意识到&#xff0c;脚下那双不起眼的劳保鞋&#xff0c;其实是守护你安全…

洞见优维「全面可观测」:从85%的AI项目败率说起

一直以来&#xff0c;优维都坚信AI有潜力改变运维行业并促进创新&#xff0c;这是我们的A面。但从行业和客户那里&#xff0c;我们所看到的B面也不容忽视。 自从去年底发布优维全面可观测以来&#xff08;点击回顾&#xff09;&#xff0c;我们的团队在服务客户的进程中常常感…

国内下载gradle慢,下载gradle超时问题解决【笔记】

下载gradle超时、慢 修改 找到项目中的gradle-wrapper.properties文件 修改 替换默认下载链接地址 distributionUrlhttps\://services.gradle.org/distributions替换为腾讯或阿里的链接地址 厂商链接阿里https://mirrors.aliyun.com/macports/distfiles/gradle腾讯https://…

vue请求springboot接口下载zip文件

说明 其实只需要按照普通文件流下载即可&#xff0c;以下是一个例子&#xff0c;仅供参考。 springboot接口 RestController RequestMapping("/api/files") public class FileController {GetMapping("/download")public ResponseEntity<Resource>…

C++ 多态三

1.多态的概念 多态的前提的是继承。当不同的对象去完成同一种行为时会产生不同的结果就是多态的通俗意义。 例如学生、成人两个对象去完成买票这个行为&#xff0c;那么学生的结果是获得半价&#xff0c;而成人获得的结果的是全价。 2.多态的定义及实现 2.1构成多态的两个硬…

自闭症学校排名前十,揭秘顶级干预学校

在当今社会&#xff0c;自闭症儿童的数量不断上升&#xff0c;众多家庭都在全力以赴地为孩子寻找适宜的自闭症学校。当面临这一重要抉择时&#xff0c;家长们常常首先想到的便是查看自闭症学校排名前十的榜单。然而&#xff0c;网络上此类排名繁多&#xff0c;其真实性与可靠性…

国产光耦的工作原理、优势以及应用介绍

国产光耦作为一种关键的电子元件&#xff0c;因其卓越的光隔离特性&#xff0c;被广泛应用于电气隔离和信号隔离领域。其可靠的性能使其在电源管理、数据通信和音频处理等领域发挥重要作用。 国产光耦是由发光二极管&#xff08;LED&#xff09;和光敏器件&#xff08;如光敏晶…

查理三世的假期并不理想 对泰勒·斯威夫特主题舞会引发的骚乱未采取其他行动遭各方批评

当查理三世国王在苏格兰巴尔莫勒尔堡享受一年一度的夏日假期时&#xff0c;英国其他地区却在应对由 7 月 29 日泰勒斯威夫特主题舞会上持刀袭击而引发的骚乱。王室成员在宫殿高墙内休息&#xff0c;而暴力事件却不断增多&#xff0c;这种对比让许多原本忠实的粉丝感到不安。 由…

C# 在Word中插入或删除分节符

在Word中&#xff0c;分节符是一种强大的工具&#xff0c;用于将文档分成不同的部分&#xff0c;每个部分可以有独立的页面设置&#xff0c;如页边距、纸张方向、页眉和页脚等。正确使用分节符可以极大地提升文档的组织性和专业性&#xff0c;特别是在长文档中&#xff0c;需要…

BCrypt加密算法的使用及原理

系列文章目录 1.SpringBoot整合RabbitMQ并实现消息发送与接收 2. 解析JSON格式参数 & 修改对象的key 3. VUE整合Echarts实现简单的数据可视化 4. List&#xff1c;HashMap&#xff1c;String,String&#xff1e;&#xff1e;实现自定义字符串排序&#xff08;key排序、Val…

69、zabbix自动、代理、snmp监控

一、zabbix 1.1、自动发现 [roottest1 ~]# systemctl stop firewalld [roottest1 ~]# setenforce 0 [roottest3 ~]# vim /etc/hosts 192.168.168.21 test1 192.168.168.23 test3 [roottest1 ~]# vim /etc/hosts 192.168.168.21 test1 192.168.168.23 test3 ------------…

AI智能名片B2B2C商城系统:优化三度空间渠道布局与避免渠道冲突的新策略

摘要&#xff1a;在数字化浪潮的推动下&#xff0c;品牌商面临着前所未有的市场挑战与机遇。为了应对这些挑战并抓住机遇&#xff0c;品牌商需要构建并优化一个高效、协同的三度空间&#xff08;线下实体店、线上电商平台、数字营销渠道&#xff09;渠道布局。本文深入探讨了AI…

【多线程-从零开始-玖】内核态,用户态,线程池的参数、使用方法详解

文章目录 1. 为什么会有线程池2. 内核态和用户态2.1 场景构造 3. 标准库的线程池3.1 构造方法的参数3.1.1 核心线程数和最大线程数3.1.2 非核心线程允许摸鱼的最大时间3.1.3 工作队列&#xff08;阻塞队列&#xff09;3.1.4 线程工厂工厂设计模式 3.1.5 拒绝策略四种拒绝策略 3…