vue框架中的组件通信

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.mzph.cn/pingmian/1618.shtml

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

相关文章

护眼台灯哪个牌子好?排名靠前的护眼台灯十大排名推荐!

护眼台灯哪个牌子好&#xff1f;目前&#xff0c;书客、松下、飞利浦等品牌备受关注。急需护眼的朋友&#xff0c;先不必焦虑。护眼台灯的选择&#xff0c;同样需要细致考虑&#xff0c;不是简单地亮起来就足够护眼。因为不当的光线可能对眼睛造成微妙而长远的伤害&#xff0c;…

WEB_py_logging日志库

目录 一、日志级别 二、基本编程方式 日志输出配置以及参数 三、logging的模块 四、logger记录器与处理器 logger记录器使用函数 logger处理器使用函数 示例&#xff1a;一个记录器分别向不同的处理器输出 五、过滤器 自定义过滤器&#xff08;过滤关键字&#xff09;…

5大自动化测试的Python框架,快来学习!

自从2018年被评选为编程语言以来&#xff0c;Python在各大排行榜上一直都是名列前茅。 目前&#xff0c;它在Tiobe指数中排名第三个&#xff0c;仅次于Java和C。随着该编程语言的广泛使用&#xff0c;基于Python的自动化测试框架也应运而生&#xff0c;且不断发展与丰富。 因…

完全小白如何用Windows电脑运行人生中的第一个Bert文本分类代码(更简单版)

诸神缄默不语-个人CSDN博文目录 我准备过几天录一个讲解视频。先等一下&#xff0c;现在只有图文版。 本文代码最早写于2024年3月27日&#xff0c;不保证未来以下代码及操作过程仍然可以使用。 本文主要关注中文仇恨检测短文本分类&#xff0c;数据集来源于datasets官网&…

绿联搭建rustdesk服务器

绿联搭建rustdesk服务器&#xff0c;不再使用向日葵 注意&#xff1a;本服务器需要有动态公网IP以及自己的域名&#xff0c;ipv6未测试。 1. 拉取镜像 rustdesk/rustdesk-server-s6:latest 注意是这个-s6的镜像。 2. 部署镜像 2.1 内存配置 本服务器比较省内存&#xff0…

关于agi中的Function Calling深入解析

接口(Interface) 两种常见接口&#xff1a; 1、人机交互接口&#xff0c;User Interface,简称UI 2、应用程序编程接口&#xff0c;Application Programming Interface,简称API 接口能【通】的关键&#xff0c;是两边都要遵守约定。 人要按照UI的设计来操作。UI的设计要符合…

Android Studio实现内容丰富的安卓养老平台

获取源码请点击文章末尾QQ名片联系&#xff0c;源码不免费&#xff0c;尊重创作&#xff0c;尊重劳动 158安卓养老 1.开发环境 后端用springboot框架&#xff0c;安卓的用android studio开发android stuido3.6 jak1.8 idea mysql tomcat 2.功能介绍 安卓端&#xff1a; 1.注册登…

【数据结构(八)上】二叉树经典习题

❣博主主页: 33的博客❣ ▶文章专栏分类: Java从入门到精通◀ &#x1f69a;我的代码仓库: 33的代码仓库&#x1f69a; &#x1faf5;&#x1faf5;&#x1faf5;关注我带你学更多数据结构的知识 目录 1.前言2.经典习题2.1相同的树2.2另一棵子树2.3翻转二叉树2.4平衡二叉树2.5对…

直播美颜工具与视频美颜SDK:技术深入探索

直播美颜工具和视频美颜SDK的出现&#xff0c;为直播平台和应用开发者提供了丰富的选择。本文将深入探讨这些技术的原理、应用和发展趋势。 一、美颜算法 直播美颜工具的核心在于其先进的美颜算法。这些算法通过对图像进行分析和处理&#xff0c;实时地修饰主播的面部特征&am…

vsstudio 如何远程调试

你可能需要调试一个在本地生成的 Windows 桌面项目,然后在远程计算机上运行可执行文件。本主题阐释如何更改本地项目设置以在远程计算机上运行应用程序。C++ 项目会自动部署到远程计算机。您将需要手动部署 .NET Framework 可执行文件。 设置 Visual C++ 项目 此处显示的过程…

项目开发流程

项目开发流程 &#x1f469;‍&#x1f9b3;项目立项 估计项目的花费&#xff0c;确定大致的所需开发人员数&#xff0c;确定项目是否可行&#xff1b; &#x1f469;‍&#x1f9b0;需求分析 整体过程&#xff1a; 项目背景和目标&#xff0c;即项目的目的是什么 用户需求&…

SQLAIchemy 异步DBManager封装-01入门理解

前言 SQLAlchemy 是一个强大的 Python SQL 工具包和对象关系映射&#xff08;ORM&#xff09;系统&#xff0c;是业内比较流行的ORM&#xff0c;设计非常优雅。随着其2.0版本的发布&#xff0c;SQLAlchemy 引入了原生的异步支持&#xff0c;这极大地增强了其在处理高并发和异步…

Windows 的常用命令(不分大小写)

Net user &#xff08;查看当前系统所有的账户&#xff09; net user yourname password /add 添加新用户 net localgroup administrators yourname /add 添加管理员权限 net user yourname /delete 删除用户 net user 命令 [colorred]说明&#xff1a;以下命令仅限持管理员…

opencv人脸打马赛克

import cv2def FaceFind(imgPath: str) -> list:image cv2.imread(imgPath)gray cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)face_cascade cv2.CascadeClassifier(haarcascade_frontalface_default.xml)# 返回人脸坐标列表faces face_cascade.detectMultiScale(gray, scal…

数据结构11:二叉树的链式结构

文章目录 快速创建链式二叉树二叉树的遍历前序、中序、后序层序 二叉树的基本操作二叉树的节点个数二叉树叶节点的个数二叉树第k层结点个数二叉树查找值为x的结点 二叉树基础oj练习单值二叉树检查两颗树是否相同对称二叉树二叉树的前序遍历另一颗树的子树 二叉树的创建和销毁二…

谷雨时节,雨水渐多湿气旺盛,吃什么养生?听听张婉如医生怎么说

谷雨春光晓&#xff0c;山川黛色青。 叶间鸣戴胜&#xff0c;泽水长浮萍。 4月19日21时59分迎来谷雨&#xff0c;雨生百谷&#xff0c;这是谷雨节气的意思&#xff0c;它是春季的最后一个节气&#xff0c;这个时节早晚温差大&#xff0c;空气湿气重&#xff0c;如何养生呢&am…

java在线问卷调查系统的设计与实现(springboot+mysql源码+文档)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的在线问卷调查系统。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 项目简介&#xff1a; 基于java的在线问卷调查…

电脑便签怎么固定位置 能固定在桌面的电脑便签

在繁忙的工作中&#xff0c;电脑便签是我离不开的小助手。每当灵感闪现&#xff0c;或是需要记录待办事项时&#xff0c;我总会打开便签&#xff0c;快速地记录下来。它就像我电脑屏幕上的一块“记事板”&#xff0c;随时提醒我未完成的工作和即将到来的任务。 但有一段时间&a…

i管家空间不足提醒怎么关闭

i管家的空间不足提醒是为了提醒用户手机存储空间不足&#xff0c;可能会影响手机的正常运行。目前&#xff0c;这个提醒功能是无法直接关闭的。如果您希望减少这类提醒的出现&#xff0c;可以尝试以下几种方法&#xff1a; 清理手机存储&#xff1a;检查手机中是否有不需要的文…

restful请求风格的增删改查-----查询and添加

一、restful风格的介绍 restful也称之为REST ( Representational State Transfer )&#xff0c;可以将它理解为一种软件架构风格或设计风格&#xff0c;而不是一个标准。简单来说&#xff0c;restful风格就是把请求参数变成请求路径的一种风格。例如&#xff0c;传统的URL请求…