Vue-2.2组件通信

news2025/3/1 13:08:55

组件通信

指组件与组件之间的数据传递。

组件的数据是独立的,无法直接访问其他组件的数据。

想用其他组件的数据->组件通信

组件关系分类

1.父子关系

通信:props和$emit

1)父组件通过props将数据传递给子组件

prop定义:组件上注册的一些自定义属性
prop作用:向子组件传递数据
特点:

·可以传递任意数量的prop

·可以传递任意类型的prop

props校验

作用:为组件的prop指定验证要求,不符合要求,控制台就会有错误提示->帮助开发者,快速发现错误。

语法:

·类型校验

props:{校验的属性名:类型},//判断传过来的数据类型是否正确

·非空校验·默认值·自定义校验

props:{
    校验的属性名:{
        type:类型,//Number String Boolean...
        required:true,//是否必填
        default:默认值,//默认值,一般写0
        validator(value){
            //自定义校验逻辑
            //console.error('')提示错误原因
            return 是否通过校验
        }
    }
}
prop&data、单向数据流

共同点:都可以给组件提供数据

区别:

·data的数据都是自己的->随便改

·prop的数据都是外部的->不能直接改,要遵循单项数据流

单向数据流:父组件的prop更新,会单向向下流动,影响到子组件。

谁的数据谁负责。

2)子组件利用$emit通知父组件修改更新

2.非父子关系(拓展)

通信:provide&inject和eventbus

1)event bus事件总线

作用:非父子组件之间,进行简易信息传递。(复杂场景->Vuex)

1.创建一个都能访问到的事件总线(空Vue实例)

在src文件夹下,创建utils(工具)/EventBus.js

import Vue from 'vue'
const Bus=new Vue()
export default Bus

2.A组件(接收方),监听Bus实例的事件

import Bus from '../utils/EventBus'
created(){
    Bus.$on('sendMsg',(msg)=>{
        this.msg=msg
    })
}

3.B组件(发送方),触发Bus实例的事件

import Bus from '../utils/EventBus'
Bus.$emit('sendMsg','这是一个消息')
2)provide&inject

作用:跨层级共享数据

1.父组件provide提供数据

export default{
    provide(){
        return{
            //普通类型【非响应式】
            color:this.color,
            //复杂类型【响应式】--推荐
            userInfo:this.userInfo,
        }
    }
}

2.子/孙组件inject取值使用

export default{
    inject:['color','userInfo']
}

通用通信:Vuex(适合复杂业务场景)

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

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

相关文章

Docker 的数据管理和Dockerfile镜像的创建

目录 Docker 的数据管理 管理 Docker 容器中数据的方式 端口映射 容器互联(使用centos镜像) Docker 镜像的创建 Dockerfile 操作常用的指令 编写 Dockerfile 时格式 Dockerfile 案例 Docker 的数据管理 管理 Docker 容器中数据的方式 管理 Doc…

使用【Blob、Base64】两种方式显示【文本、图片、视频】 使用 video 组件播放视频

Blob 显示 Blob 对象的类型是由 MIME 类型(Multipurpose Internet Mail Extensions)来确定的。MIME 类型是一种标准,用于表示文档、图像、音频、视频等多媒体文件的类型。以下是一些常见的 Blob 对象类型: text/plain&#xff1…

华为数通方向HCIP-DataCom H12-831题库(单选题:241-260)

第241题 某园区部署了IPV6进行业务测试,该网络中有4台路由器(R1R2、R3和R),运行OSPFV3实现Pv6网络的互联互通。有一台新的路由器R5需要接入网络进行测试,某工程师通过在R4的OSPFV3进程中引入直连路由,实现园区网内的设备能够访问R5的GEO/0/1口地址。关千该场景的描述,错误…

RabbitMq启用TLS

Windows环境 查看配置文件的位置 选择使用的节点 查看当前节点配置文件的配置 配置TLS 将证书放到同配置相同目录中 编辑配置文件添加TLS相关配置 [{ssl, [{versions, [tlsv1.2]}]},{rabbit, [{ssl_listeners, [5671]},{ssl_options, [{cacertfile,"C:/Users/17126…

TensorFlow学习:在web前端如何使用Keras 模型

前言 在上篇文章 TensorFlow学习:使用官方模型进行图像分类、使用自己的数据对模型进行微调中我们学习了如何使用官方模型,以及使用自己的数据微调模型。 但是吧,代码一直是跑在Python里,而我本身是做前端开发的。我是很想让它在…

京东历史价格数据接口,京东商品历史价格接口,京东API接口

京东商品历史价格数据接口采集方法如下: 注册京东开发者账号,并创建应用,获取到应用ID(appID)、应用密钥(appSecret)以及访问令牌(accessToken)。获取接口请求地址。根据…

让 Visual Studio 用上 ChatGPT

一、简介 Visual chatGPT Studio 是 Visual Studio 的一个免费扩展,它直接在 IDE 中添加了 chatGPT 功能。它允许用户以可以根据菜单功能的方式使用 chatGPT。 二、功能介绍 该扩展提供了一组使用 ChatGPT 命令,可以在编辑器中选择你需要处理的代码或…

Python数据挖掘:入门、进阶与实用案例分析——自动售货机销售数据分析与应用

文章目录 摘要01 案例背景02 分析目标03 分析过程04 数据预处理1. 清洗数据1.1 合并订单表并处理缺失值1.2 增加“市”属性1.3 处理订单表中的“商品详情”属性1.4 处理“总金额(元)”属性 2.属性选择3.属性规约 05 销售数据可视化分析1.销售额和自动售货…

视频批量剪辑与分割:这些技巧帮你提高生成m3u8文件的效率

在数字媒体时代,m3u8文件已经成为了一种常见的流媒体格式,广泛应用于网络视频播放。这种文件由一系列音视频片段组成,对于提供高质量的视频体验至关重要。本文将介绍如何通过云炫AI智剪将视频批量剪辑与分割技巧来提高生成m3u8文件的效率&…

计算机网络第四层 运输层

一,运输层引入的目的 1,网络通信主体标识 网络通信的本质是运行的主机上的进程之间的通信 同一个主机上有多个进程在工作,进程如何加以区分标识(PID)---本地主机 网络上的主机需要一个统一的进程标识分配机制 逻辑…

基于单目相机的2D测量(工件尺寸和物体尺寸)

目录 1.简介 2.基于单目相机的2D测量 2.1 想法: 2.2 代码思路 2.2 主函数部分 1.简介 基于单目相机的2D测量技术在许多领域中具有重要的背景和意义。 工业制造:在工业制造过程中,精确测量是确保产品质量和一致性的关键。基于单目相机的2…

uniapp编译到小程序Component is not found in path “components/energy/illumination“

Component is not found in path "components/energy/illumination" 直接清除缓存重新编译

如何保护我们的网络安全

保护网络安全是至关重要的,尤其是在今天的数字化时代。以下是一些保护网络安全的基本步骤: 1、使用强密码:使用包含字母、数字和特殊字符的复杂密码。不要在多个网站上重复使用相同的密码。定期更改密码。 2、启用双因素认证 (2FA)&#xff…

JavaScript反爬虫技巧详细攻略

在互联网时代,网站采取了各种手段来防止被爬虫抓取数据,其中最常见的就是JavaScript反爬虫技巧。本文将揭示一些常用的JavaScript反爬虫技巧,并提供一些实际操作建议,帮助您保护自己的爬虫免受检测和封禁。 1、为什么网站使用Java…

CentOS 搭建 OpenVPN 服务

CentOS 搭建 OpenVPN 服务 概述OpenVPN 应用场景OpenVPN 主机准备OpenVPN 服务端搭建部署安装配置证书软件创建证书安装openvpn并写入服务端配置文件启动并检查端口 OpenVPN客户端配置(linux端)配置openvpn测试连接 OpenVPN客户端搭建部署(wi…

AMD Zen5、Zen6架构细节首次曝光:原生32核心!直奔2nm工艺

AMD将在明年推出Zen5架构的锐龙8000系列、霄龙9005/8005系列,更下一代的Zen6架构也已经崭露头角,据说可以支持到史无前例的16通道内存。 现在,MLID曝光了一份AMD架构路线图,列出了Zen5、Zen6的不少细节,尤其是…

Element Plus阻止 el-dropdown、el-switch等冒泡事件

最近做vue3项目&#xff0c;使用Element Plus,又遇到坑了&#xff01; 问题点&#xff1a;组件中遇到事件冒泡问题了&#xff0c;el-checkbox 中 change事件要求阻止冒泡&#xff0c;如下代码中要求点击checkbox时不调用li标签的show方法 <li click"show()">…

UE4和C++ 开发-C++与UMG的交互2(C++获取UMG的属性)

1、...C获取UMG的属性 1.1、第一种方法&#xff1a;通过名称获取控件。 void UMyUserWidget::NativeConstruct() {Super::NativeConstruct();//通过名字&#xff0c;获取蓝图控件中的按钮引用。CtnClic Cast<UButton>(GetWidgetFromName(TEXT("Button_44"))…

什么是实验室超声波乳化?超声波乳化的工作原理?

乳液是什么&#xff1f;它是两种或多种不相混合的液体的共同体。那么&#xff0c;这些互不相容的液体是如何混合在一起的呢&#xff1f;这就要归功于超声波的神奇力量。超声波乳化棒&#xff0c;就像一个无形的魔法师&#xff0c;将高强度的超声波能量耦合到液体中&#xff0c;…

【API篇】一、执行环境API

文章目录 0、认识1、创建执行环境2、执行模式3、触发程序执行4、关于executeAsync方法 0、认识 DataStream API是Flink的核心层API。一个Flink程序&#xff0c;其实就是对数据源DataStream的各种转换。具体来说&#xff0c;代码基本上都由以下几部分构成&#xff1a; 后面章节…