vue框架中的组件通信

news2024/9/29 11:34:17

vue框架中的组件通信

  • 一.组件通信关系
  • 二.父子通信
    • 1.props 校验
    • 2.prop & data、单向数据流
  • 二.非父子通信-event bus 事件总线
  • 三.非父子通信 (拓展) - provide & inject
  • 四.v-model简化父子通信代码
  • 五. .sync修饰符

一.组件通信关系

组件关系分类:
1.父子关系
2.非父子关系
组件通信解决方案:
在这里插入图片描述

二.父子通信

1.父组件通过 props 将数据传递给子组件
2. 子组件利用 $emit 通知父组件修改更新在这里插入图片描述父向子通信代码示例
父组件通过props将数据传递给子组件
在这里插入图片描述
子组件利用 $emit 通知父组件,进行修改更新
在这里插入图片描述

1.props 校验

作用:为组件的 prop 指定验证要求,不符合要求,控制台就会有错误提示 ,帮助开发者快速发现错误
语法:
① 类型校验
② 非空校验
③ 默认值
④ 自定义校验

props校验完整写法
语法:

props: {
  校验的属性名: {
    type: 类型,  // Number String Boolean ...
    required: true, // 是否必填
    default: 默认值, // 默认值
    validator (value) {
      // 自定义校验逻辑
      return 是否通过校验
    }
  }
},

2.prop & data、单向数据流

共同点:都可以给组件提供数据。
区别:
data 的数据是自己的 → 随便改
prop 的数据是外部的 → 不能直接改,要遵循 单向数据流
单向数据流:父级 prop 的数据更新,会向下流动,影响子组件。这个数据流动是单向的

二.非父子通信-event bus 事件总线

作用:
非父子组件之间,进行简易消息传递。(复杂场景→ Vuex)
在这里插入图片描述

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

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

2.A组件(接受方),监听Bus的 $on事件

created () {
  Bus.$on('sendMsg', (msg) => {
    this.msg = msg
  })
}

3.B组件(发送方),触发Bus的$emit事件

Bus.$emit('sendMsg', '这是一个消息')

三.非父子通信 (拓展) - provide & inject

provide & inject 作用:跨层级共享数据。
在这里插入图片描述

1.父组件 provide 提供数据

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

2.子/孙组件 inject获取数据

export default {
  inject: ['color','userInfo'],
  created () {
    console.log(this.color, this.userInfo)
  }
}

注意:
provide提供的简单类型的数据不是响应式的,复杂类型数据是响应式。(推荐提供复杂类型数据)
子/孙组件通过inject获取的数据,不能在自身组件内修改

四.v-model简化父子通信代码

原理:v-model本质上是一个语法糖。例如应用在输入框上,就是 value属性 和 input事件 的合写。
作用:提供数据的双向绑定
① 数据变,视图跟着变 :value
② 视图变,数据跟着变 @input
注意:$event 用于在模板中,获取事件的形参

<template>
  <div id="app" >
    <input v-model="msg" type="text">
    <!-- 等同于 -->
    <input :value="msg" @input="msg = $event.target.value" type="text">
  </div>
</template>

表单类组件封装->实现 子组件和父组件数据 的双向绑定
① 父传子:数据 应该是父组件 props 传递 过来的,拆解 v-model 绑定数据
② 子传父:监听输入,子传父传值给父组件修改
在这里插入图片描述
弊端:子组件中的props只能接受一个从父组件传来的名为value的值

五. .sync修饰符

可以实现 子组件 与 父组件数据 的 双向绑定,简化代码
特点:prop属性名,可以自定义,非固定为 value
场景:封装弹框类的基础组件,visible属性 true显示 false隐藏
本质:就是 :属性名 和 @update:属性名合写
在这里插入图片描述

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

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

相关文章

细水雾发生器你的相信我的诚信

做销售就是两个信&#xff1a;你的相信&#xff01;我的诚信&#xff01;成交就两颗心&#xff1a;你的放心&#xff01;我的用心&#xff01;你给我一次合作的机会&#xff0c;我给你十分满意的产品。一次合作&#xff0c;终身朋友&#xff5e; 产品的结构&#xff1a; 细水雾…

快速了解什么是MES系统

近年来在制造业的推动下&#xff0c;大家是否会经常听到MES系统这一词&#xff0c;但是对于其具体能解决什么问题却不是很清晰。接下来&#xff0c;让大家快速地了解一下到底什么是MES系统以及MES系统能够解决什么问题。 什么是MES制造执行系统 制造执行系统&#xff08;Manufa…

TBWeb开发版V3.2.6免授权无后门Chatgpt系统源码下载及详细安装教程

TBWeb系统是基于 NineAI 二开的可商业化 TB Web 应用&#xff08;免授权&#xff0c;无后门&#xff0c;非盗版&#xff0c;已整合前后端&#xff0c;支持快速部署&#xff09;。相比稳定版&#xff0c;开发版进度更快一些。前端改进&#xff1a;对话页UI重构&#xff0c;参考C…

Excel超级处理器,批量创建工作表,这也太方便了吧

在工作中&#xff0c;经常要创建或复制多个工作表&#xff0c;按照日期或指定的工作表名&#xff0c;为了能够更加方便快捷&#xff0c;那么下面介绍使用超级处理的应用。 超级处理器下载与安装 1、按照本月日期创建新工作表 2、按照本月日期复制工作表 3、按照单元格内容创建…

外显子测序wes

外显子是基因组中能够转录组出成熟RNA的部分。一个基因组中所有外显子的集合&#xff0c;即为外显子组。值得注意的是&#xff0c;通常所说的全外显子组测序&#xff0c;是指针对蛋白编码基因的外显子&#xff0c;很少涉及非编码基因。 基因(gene)是DNA中含有特定遗传信息的一…

AI智能电销机器人的营销策略是什么?

近年来&#xff0c;伴随着制造业新一轮的数字化智能化转型浪潮。各大企业开始使用电销机器人&#xff0c;解决了传统电销工作过程中的许多问题&#xff0c;更显著的是&#xff1a;电话机器人在替代人工工作基础上&#xff0c;节约人工成本70%以上&#xff0c;极大程度地高额完成…

从本地创建项目到 Gitee 提交的完整教程

1、本地创建一个新项目 2.进入想上传的项目的文件夹&#xff0c;然后右键点击git bash 3.初始化本地环境&#xff0c;把该项目变成可被git管理的仓库 4.添加该项目下的所有文件到暂存区 5.使用如下命令将文件添加到仓库中去 6.在gitee上创建以自己项目名称命名的空项目 7.将本地…

Windows上使用VSCode连接远程服务器(附图文过程)

1、下载VSCode 官网下载地址&#xff0c;选择需要的进行下载 2、安装SSH插件 安装完成之后&#xff0c;启动vscode&#xff0c;选择左侧Extensions 选项卡&#xff0c;在输入框搜索 remote &#xff0c;选择安装Remote-SSH插件&#xff08;我使用了汉化&#xff0c;如果要用…

ubuntu18.04与windows文件互传

目录 window下载Xftp软件ubuntu上的配置windows端Xftp软件的使用 window下载Xftp软件 下载&#xff1a;家庭/学校免费版 安装教程推荐下面的文章 xftp7免费版安装教程&#xff08;详细&#xff09; ubuntu上的配置 在进入系统后&#xff0c;确保有网络连接的情况下按Ctrl A…

制作适用于openstack平台的win10镜像

1. 安装准备 从MSDN下载windows 10的镜像虚拟机开启CPU虚拟化的功能。从Fedora 网站下载已签名的 VirtIO 驱动程序 ISO 。 创建15 GB 的 qcow2 镜像&#xff1a;qemu-img create -f qcow2 win10.qcow2 15G 安装必要的软件 yum install qemu-kvm qemu-img virt-manager libvir…

28map,set关联式容器

序列式容器 vector、list、deque(单纯的纯数据) 关联式容器 map、set&#xff0c;哈希&#xff0c;&#xff0c;&#xff0c;(数据之间有很强的关联性,不是单纯的为了存储数据) Set 底层是搜索树&#xff08;红黑树&#xff09; T是key &#xff0c;compare是仿函数&#xff0…

书生·浦语大模型-第四节课笔记/作业

笔记 作业 xtuner train ./config/internlm2_chat_7b_qlora_alpaca_e3_copy.py --work-dir ./train微调前效果 微调后效果 微调过程-transformer-lora

Django中的定时任务与后台任务队列的实践

&#x1f47d;发现宝藏 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 在Web开发中&#xff0c;处理定时任务和后台任务队列是很常见的需求。Django作为一个功能强…

032——从GUI->Client->Server->driver实现ds18b20数据的采集

目录 1、客户端修改和通信帧确定 2、 修改服务器程序 3、 添加driver_handle程序 4、 测试 1、客户端修改和通信帧确定 上次写dht11的时候顺手把ds18b20的GUI一起改了所以这次直接去改client #ds18b20elif cmd[2] 0 and cmd[3] 6:if cmd[4] g:try:global_var.TEMcmd[5]…

在 Linux 上通过 udev 规则绑定 ttyUSB 设备的相对地址

文章目录 问题描述解决方案1. 分辨当前 USB 设备的绝对地址2. 使用绝对地址查看设备属性3. 使用 udev 规则绑定设备到相对地址3.1. 区分多个不同型号 USB 设备3.2. 区分多个相同型号 USB 设备 问题描述 Linux 系统开机时会随机为连接的 USB 设备随机分配 /dev/ttyUSB* 这样的绝…

ubuntu20 解决网线不能联网 RTL8111/8168/8411

这种问题一般是驱动没有正确安装。 ----RTL8111/8168/8411是一块比较坑的网卡。 1、 查看网卡信息 lspci |grep Ethernet2、 对于高版本的Ubuntu&#xff0c;能直接使用命令安装驱动。下面的r8168-dkms需根据网卡信息修改&#xff0c;上面的网卡信息还有8111&#xff0c;但逐个…

CSS画一条虚线,并且灵活设置虚线的宽度和虚线之间的间隔和虚线的颜色

CSS画一条虚线,并且灵活设置虚线的宽度和虚线之间的间隔和虚线的颜色。 先看效果图&#xff1a; 在CSS中&#xff0c;你可以使用border属性或者background属性来画一条虚线。以下是两种常见的方法&#xff1a; 方法一&#xff1a;使用border属性 你可以设置一个元素的border…

C#版Facefusion:让你的脸与世界融为一体!-05 人脸增强

C#版Facefusion&#xff1a;让你的脸与世界融为一体&#xff01;-05 人脸增强 目录 说明 效果 模型信息 项目 代码 下载 说明 C#版Facefusion一共有如下5个步骤&#xff1a; 1、使用yoloface_8n.onnx进行人脸检测 2、使用2dfan4.onnx获取人脸关键点 3、使用arcface_w60…

C++高级特性:虚函数与多态的实现原理(十三)

1、虚函数表和虚函数表指针 如果一个类存在virtual关键字函数或者继承的基类中存在virtual关键字的函数&#xff0c;那么该类的就会存在vptr和一个vtable vptr虚函数表指针全称virtual table pointer、vtable是虚函数表virtual table的缩写。 class A{ public:~A(); };class B…

随机森林(Random Forests)

通过5个条件判定一件事情是否会发生&#xff0c;5个条件对这件事情是否发生的影响力不同&#xff0c;计算每个条件对这件事情发生的影响力多大&#xff0c;写一个随机森林&#xff08;Random Forests&#xff09;模型程序,最后打印5个条件分别的影响力。 ChatGPT 下面是一个使…