Vue2组件通信专题

news2024/11/18 13:42:55

组件通信专题

一、vue2中常用的6中组件通信方式

1. props

适用于的场景:父子组件通信

注意事项:

如果父组件给子组件传递数据(函数):本质其实是子组件给父组件传递数据。

如果父组件给子组件传递数据(非函数):本质就是父组件给子组件传递数据。

书写方式:3种

['todos'],{type:Array},{type:Array,default:[]}

小提示:路由的props 书写形式:布尔值,对象、函数形式

2. 自定义事件

适用于场景:子组件给父组件传递数据

$on$emit

3. 全局事件总线$bus

适用于场景:万能

Vue.prototype.$bus = this

4. pubsub-js

在React框架中使用比较多。(发布与订阅)

适用于场景:万能

5. Vuex

使用于场景:万能

6. 插槽

适用于场景:父子组件通信----(一般结构)

默认插槽

具名插槽

作用域插槽(重写饿了么的表格组件常用)

二、事件分类

在学习新的组件通信方式前,我们先来了解一下事件的种类,顺便回顾一下已经学过的组件通信方式。

事件分为两类

  • 原生DOM事件:click、双击、鼠标系列等等。
  • 自定义事件

需要注意的是:

原生DOM节点(如果div,button等)绑定click事件默认是系统事件,而非原生DOM节点(组件标签)绑定click事件默认是自定义事件,要想把click自定义事件变成原生DOM事件需要在事件绑定后面跟上.native,如@click.native=""

如若没有加.native则需要以自定义事件的方式来触发事件,即在子组件中使用$emit触发函数。

下面我们通过代码来帮助理解

在这里插入图片描述

三、深入v-model

1. v-model的原理

原生DOM当中有oninput事件,它经常结合表单元素一起使用,oninput事件是一个键盘输入事件当表单元素文本内容发生变化的时候就会触发一次回调。

在vue2中,通过value(单向绑定,全称是v-bind:value)和input事件实现v-model的功能。如下图:

在这里插入图片描述

其实这里就是单向绑定msg的值,触发onInput事件,近似于调用了一个匿名函数修改了msg,从而实现双向绑定。

2. v-model实现父子组件数据同步

v-model它是Vue框架中指令,它主要结合表单元素一起使用(文本框、复选、单选等等),它的主要作用是收集表单数据。

通过下图方式可以实现父子组件数据同步。

在这里插入图片描述

值的注意的是:

  1. 父组件中调用子组件所使用的:value是props组件通信,而不是原生DOM的单向数据绑定,所调用的@input事件也并非原生DOM事件,而是自定义事件。

  2. 子组件中input输入框所使用的:value是原生DOM的单向数据绑定,所调用的@input事件是原生DOM事件。

  3. 父组件中@input绑定的事件中的$event用于接收子组件中通过$emit传递来的数据

    扩展:$event的两个应用场景

    1. 获取原生DOM事件的事件对象。
    2. 事件注册所传的参数(子组件向父组件传值)。

总结:

v-model实现原理:valueinput事件实现的。

另外可以通过v-model实现父子组件数据同步。

四、属性修饰符sync实现父子组件通信

属性修饰符sync也可以实现组件数据同步。如下图

在这里插入图片描述

结果演示

在这里插入图片描述

:money.sync代表父组件给字符串传递propsmoney,给当前子组件绑定一个自定义事件update:money

五、组件属性$attrs$listeners实现父子组件通信

$attrs属于组件的一个属性,可以获取到父组件传递过来的props数据

对于子组件而言,父组件给的数据可以利用props接受,但是需要注意的是,子组件通过props接受到的属性,在$attrs当中是获取不到的

$listeners也是组件的一个属性,它可以获取到父组件给子组件传递的自定义事件

那么如何在子组件中使用$attrs$listeners呢?

v-bind="$attrs"

v-on="$listeners"

注意:使用这两个属性v-bind不能用:代替,v-on不能用@代替。

下面我们通过实例来加深理解

在这里插入图片描述

效果演示

在这里插入图片描述

六、组件属性$children$parent实现父子组件通信

ref可以获取到某一个组件,子组件【最常用】

组件实例自身拥有一个属性$children,可以获取到当前组件当中的全部子组件,

$parent可以获取到当前子组件的父组件,进而可以操作父组件的数据和方法。

在这里插入图片描述

效果演示
在这里插入图片描述

七、插槽实现父子组件通信

待补。

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

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

相关文章

【致敬未来的攻城狮计划】— 连续打卡第七天:(电脑重装系统)学习RA产品家族选型手册

系列文章目录 1.连续打卡第一天:提前对CPK_RA2E1是瑞萨RA系列开发板的初体验,了解一下 2.开发环境的选择和调试(从零开始,加油) 3.欲速则不达,今天是对RA2E1 基础知识的补充学习。 4.e2 studio 使用教程 5.…

大数据hadoop课程实验总结

1一.安装hadoop 本门课程使用的是centos7.2 64位操作系统,原生hadoop2.7.7,java1.7版本。 安装centos7.2系统: 创建系统的同时创建一个名为hadoop的账户。这一步不难,此处就不再详说。 没有hadoop用户可以创建一个Hadoop用户: …

ChatBox安装--ChatGPT的桌面客户端

ChatBox 是什么 是开源的 ChatGPT API (OpenAI API) 桌面客户端,Prompt 的调试与管理工具,支持 Windows、Mac 和 Linux。 > github地址 下载链接 支持的平台: Windows : 请下载.msi安装包 Mac:请下载.dmg(推荐…

【微服务笔记13】微服务组件之Config配置中心基础环境搭建

这篇文章,主要介绍微服务组件之Config配置中心基础环境搭建。 目录 一、Config配置中心 1.1、什么是配置中心 1.2、Config配置中心特点 二、搭建Config配置中心 2.1、配置Git仓库 2.2、创建ConfigServer服务端 (1)引入依赖 &#xff…

性能测试,监控磁盘读写iostat

性能测试,监控磁盘读写iostat iostat是I/O statistics(输入/输出统计)的缩写,iostat工具将对系统的磁盘操作活动进行监视。它的特点是汇报磁盘活动统计情况,同时也会汇报出 CPU使用情况。同vmstat一样,ios…

【iOS-#import <> ““, @class和C- #include<> ““, 】

前言 寒假分享会的遗漏问题总结 引入 在C/CPP语言里&#xff0c;引入某个头文件的操作 #include<iostream> #include<string>也有 #include "string"同样在OC里面 引入某个类会用到 #import关键字 #import "LoginViewController.h" #im…

web开发HTML生成PDF的三种解决方案(服务器端mpdf、html2canvas.js、浏览器打印、PDF虚拟打印机)

系列文章目录 python数据可视化开发(4)&#xff1a;爬取对应地址的pdf文档并分类保存到本地文件夹&#xff08;爬虫&#xff09;php使用mPDF实战案例分析字符串太长时文本变小无法自动分页的解决方案web开发HTML生成PDF的三种解决方案&#xff08;服务器端mdf、h2pdf.js、浏览…

Nuxt.js - 超详细实现路由 “伪静态“,将浏览器网页路径 URL 链接后面加上 .html 后缀名称(可以自定义任何结尾后缀名称)详细示例教程

前言 正常的项目,路由都是 /index | /user/add 这种,但有一个办法可以让其后面带上 .html,比如:/index.html。 本文 在 Nuxt.js 项目中,描述了如何实现伪静态详细教程,让页面路由后面都跟上一段自定义后缀名,比如 .html / .asp, 你可以按照本文的教程,最终得到伪静态…

阿赵的MaxScript学习笔记分享十四《Struct结构体的使用和面向对象的思考》

MaxScript学习笔记目录 大家好&#xff0c;我是阿赵 之前写了一些MaxScript的学习笔记&#xff0c;里面实现的功能不算很复杂&#xff0c;所以都是使用了偏向于面向过程的方式去编写的。 我本人其实是比较习惯用面向对象的方式去编写代码。关于面向过程和面向对象之间的优缺点…

3.5 方程组的状态与解的迭代改善

学习目标&#xff1a; 如果我要学习方程组的状态与解的迭代改善&#xff0c;我会采取以下步骤&#xff1a; 学习迭代方法的基本理论&#xff1a;首先&#xff0c;我会学习迭代方法的基本概念、原理和公式&#xff0c;包括雅可比迭代法、高斯-赛德尔迭代法和逐次超松弛迭代法等…

融合CDN行为分析动态加速解决方案

网络延迟对电商企业产生了巨大的负面影响&#xff0c;延迟是电子商务的杀手&#xff0c;网站访客等待的时间越长&#xff0c;最终实现转化的可能性就越小&#xff0c;同时他们对你的网站品牌的认可度也就越低&#xff0c;快速的网站内容交付是具有全球意识的电商企业不可或缺的…

Qt优秀开源项目之十八:QtService

QtService是一个用于实现Windows服务或unix守护进程的开源项目 github地址&#xff1a;https://github.com/qtproject/qt-solutions/tree/master/qtservice 源码可以编译成动态库&#xff0c;也可以直接在项目中引用源码 源码目录qtservice/examples中包含了三个例子&#xff0…

【Linux】system V 消息队列 | system V 信号量(简单赘述)

文章目录 1 . system V 消息队列(了解)接口查看消息队列 2.system V 信号量 (了解)1.进程互斥等概念的理解2.认识信号量3. 接口 这两部分主要是了解即可&#xff0c;为后面学习做铺垫 1 . system V 消息队列(了解) 为了让两个进程间通信 创建一个队列queue 进程A可以通过消息队…

Python——第2章 数据类型、运算符与内置函数

目录 1 赋值语句 2 数据类型 2.1 常用内置数据类型 2.1.1 整数、实数、复数 2.1.2 列表、元组、字典、集合 2.1.3 字符串 2.2 运算符与表达式 2.2.1 算术运算符 2.2.2 关系运算符 2.2.3 成员测试运算符 2.2.4 集合运算符 2.2.5 逻辑运算符 2.3 常用内置…

Kubernetes 笔记(15)— 应用保障、容器资源配额、容器状态探针概念及使用

作为 Kubernetes 里的核心概念和原子调度单位&#xff0c;Pod 的主要职责是管理容器&#xff0c;以逻辑主机、容器集合、进程组的形式来代表应用&#xff0c;它的重要性是不言而喻的。 在上层 API 对象的基础上&#xff0c;一起来看看在 Kubernetes 里配置 Pod 的两种方法&…

dell t630服务器风扇控制笔记记录(耗时一天)

1、打开虚拟控制台得用IE&#xff1b; 2、Dell PowerEdge T640 加装显卡之后风扇狂转问题解决 - 知乎 感谢知乎Billy&#xff0c; 操作步骤&#xff1a; 1、查看iDrac版本&#xff0c;必须在3.30.30.30及以下&#xff0c;之后的版本关闭了手动控制风扇转速的权限&#xff0…

从视图树到GPU:探索Android渲染机制

简介 在 Android 中&#xff0c;渲染技术可以分为 CPU 渲染和 GPU 渲染两种方式。CPU 渲染是直接使用 CPU 处理数据&#xff0c;并将其显示在屏幕上&#xff0c;而 GPU 渲染则是将数据传递给 GPU 进行处理和显示。 具体的渲染技术如下&#xff1a; Canvas绘图&#xff1a;An…

多层感知器介绍

一、概览 现实世界中很多真实的问题都不是线性可分的&#xff0c;即无法使用一条直线、平面或者超平面分割不同的类别&#xff0c;其中典型的例子是异或问题&#xff08;Exclusive OR&#xff0c;XOR&#xff09;&#xff0c;即假设输入为x1和x2&#xff0c;如果它们相同&…

Linux远程访问及控制SSH命令

目录 一. SSH服务1.1 SSH基础1.1.1什么是SSH服务器&#xff1f;1.1.2SSH优点1.1.3常见的ssh协议 二. 服务端配置文件常用选项2.1设置白名单2.2设置黑名单 三. SSH服务的两种验证方式3.1 公钥与私钥的关系 四. ssh客户端程序4.1ssh远程登录4.2 scp 远程复制4.3 sftp 安全的ftp 五…

Direct3D 12——计算着色器——计算着色器概念

计算着色器虽然是一种可编程的着色器&#xff0c;但Direct3D并没有将它直接归为渲染流水线中的一部分。虽然如此&#xff0c;但位于流水线之外的计算着色器却可以读写GPU资源。从本质上来说&#xff0c;计算着 色器能够使我们访问GPU来实现数据并行算法&#xff0c;而不必渲染出…