当前位置: 首页 > news >正文

vue组件间通信的几个方法

一,props属性传递数据

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

子组件设置props属性,定义接收父组件传递过来的参数
父组件在使用子组件标签中通过字面量来传递值

Children.vue

props:{  // 字符串形式  name:String // 接收的类型参数  // 对象形式  age:{    type:Number, // 接收的类型为数值  defaule:18,  // 默认值为18  require:true // age属性必须传递  }  
}  

Father.vue组件

<Children name="jack" age=18 />  

二,$emit 触发自定义事件

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

子组件通过emit触发自定义事件,emit触发自定义事件,emit触发自定义事件,emit第二个参数为传递的数值
父组件绑定监听器获取到子组件传递过来的参数

Chilfen.vue

this.$emit('add', good)  

Father.vue

<Children @add="cartAdd($event)" />  

ref
父组件在使用子组件的时候设置ref
父组件通过设置子组件ref来获取数据

父组件

<Children ref="foo" />  this.$refs.foo  // 获取子组件实例,通过子组件实例我们就能拿到对应的数据  

三,EventBus

使用场景:兄弟组件传值

创建一个中央时间总线EventBus
兄弟组件通过emit触发自定义事件,emit触发自定义事件,emit触发自定义事件,emit第二个参数为传递的数值
另一个兄弟组件通过$on监听自定义事件

Bus.js

// 创建一个中央时间总线类  
class Bus {  constructor() {  this.callbacks = {};   // 存放事件的名字  }  $on(name, fn) {  this.callbacks[name] = this.callbacks[name] || [];  this.callbacks[name].push(fn);  }  $emit(name, args) {  if (this.callbacks[name]) {  this.callbacks[name].forEach((cb) => cb(args));  }  }  
}  

main.js

Vue.prototype.$bus = new Bus() // 将$bus挂载到vue实例的原型上  
// 另一种方式  
Vue.prototype.$bus = new Vue() // Vue已经实现了Bus的功能  

Children1.vue

this.$bus.$emit('foo')  

Children2.vue

this.$bus.$on('foo', this.handle)  

四,$parent或 $root

通过共同祖辈parent或者parent或者parent或者root搭建通信侨联

兄弟组件

this.$parent.on('add',this.add)

另一个兄弟组件

this.$parent.emit('add')

五,attrs和listeners

适用场景:祖先传递数据给子孙

设置批量向下传属性$attrs和 listeners包含了父级作用域中不作为prop被识别(且获取)的特性绑定(class和style除外)。可以通过v−bind="listeners 包含了父级作用域中不作为 prop 被识别 (且获取) 的特性绑定 ( class 和 style 除外)。 可以通过 v-bind="listeners包含了父级作用域中不作为prop被识别(且获取)的特性绑定(classstyle除外)。可以通过vbind="attrs" 传⼊内部组件

// child:并未在props中声明foo  
<p>{{$attrs.foo}}</p>  
// parent  
<HelloWorld foo="foo"/>  
// 给Grandson隔代传值,communication/index.vue  
<Child2 msg="lalala" @some-event="onSomeEvent"></Child2>  
// Child2做展开  
<Grandson v-bind="$attrs" v-on="$listeners"></Grandson>  
// Grandson使⽤  
<div @click="$emit('some-event', 'msg from grandson')">  
{{msg}}  
</div>  

六,provide 与 inject

在祖先组件定义provide属性,返回传递的值
在后代组件通过inject接收组件传递过来的值

祖先组件

provide(){  return {  foo:'foo'  }  
}  

后代组件

inject:['foo'] // 获取到祖先组件传递过来的值  

七,vuex

适用场景: 复杂关系的组件数据传递

Vuex作用相当于一个用来存储共享变量的容器
state用来存放共享变量的地方
getter,可以增加一个getter派生状态,(相当于store中的计算属性),用来获得共享变量的值
mutations用来存放修改state的方法。
actions也是用来存放修改state的方法,不过action是在mutations的基础上进行。常用来做一些异步操作

关于vuex的使用请参考:vuex的五个属性及使用方法示例

八,总结

  1. 父子关系的组件数据传递选择 props 与 $emit进行传递,也可选择ref
  2. 兄弟关系的组件数据传递可选择bus,其次可以选择bus,其次可以选择bus,其次可以选择parent进行传递
  3. 祖先与后代组件数据传递可选择attrs与listeners或者 Provide与 Inject
  4. 复杂关系的组件数据传递可以通过vuex存放共享的变量

相关文章:

vue组件间通信的几个方法

一&#xff0c;props属性传递数据 适用场景&#xff1a;父组件传递数据给子组件 子组件设置props属性&#xff0c;定义接收父组件传递过来的参数 父组件在使用子组件标签中通过字面量来传递值 Children.vue props:{ // 字符串形式 name:String // 接收的类型参数 // 对象…...

商品价格区间设置与排序--课后程序(Python程序开发案例教程-黑马程序员编著-第4章-课后作业)

实例2&#xff1a;商品价格区间设置与排序 在网上购物时&#xff0c;面对琳琅满目的商品&#xff0c;我们应该如何快速选择适合自己的商品呢&#xff1f;为了能够让用户快速地定位到适合自己的商品&#xff0c;每个电商购物平台都提供价格排序与设置价格区间功能。假设现在某平…...

mybatis中sqlSession的使用

文章目录sqlsession的使用依赖jdbc.propertiesmysql-config.xml配置逆向工程创建sqlSessionsqlsession的使用 在最开始我们使用jdbcUtil的方式进行硬编码&#xff0c;sql字符串写的很难受&#xff0c;使用mybatis可以解决这个问题&#xff0c;它提供了数据库与实体类的关系映射…...

TPOT(Tree-based Pipeline Optimization Tool) API简介

文章目录TPOT简介TPOT APIClassification接口形式&#xff1a;Parameters&#xff1a;Attributes:Functions&#xff1a;Regression接口形式Parameters:&#xff08;只列与分类任务有差异的参数&#xff09;TPOT简介 TPOT是一个Python自动机器学习&#xff08;AML&#xff09;…...

Java 19和IntelliJ IDEA,如何和谐共生?

Java仍然是目前比较流行的编程语言&#xff0c;它更短的发布节奏让开发者每六个月左右就可以试用新的语言或平台功能&#xff0c;IntelliJ IDEA帮助我们更流畅地发现和使用这些新功能。IntelliJ IDEA v2022.3正式版下载(Q技术交流&#xff1a;786598704&#xff09;在本文中&am…...

js循环判断的方法

js循环判断的方法if语句if else语句if else if else if......三元表达式switchswitch语句和if语句的区别for循环while循环do while循环for inforEachfor of性能问题if语句 条件满足就执行&#xff0c;不满足就不执行 if(条件){语句}if else语句 条件满足&#xff0c;执行语句…...

git快速入门(1)

1 git的下载与安装1&#xff09;下载git安装包下载路径&#xff1a;https://git-scm.com/我的操作系统是window&#xff0c;64位的&#xff0c;我下载的Git-2.33.0-64-bit.exe&#xff0c;从官网下载或者从网址下载链接&#xff1a;链接地址&#xff1a;https://pan.baidu.com/…...

韩国绿芯1~16通道触摸芯片型号推荐

随着技术的发展&#xff0c;触摸感应技术正日益受到更多关注和应用&#xff0c;目前实现触摸感应的方式主要有两种&#xff0c;一种是电阻式&#xff0c;另一种是电容式。电容式触摸具有感应灵敏、功耗低、寿命长等特点&#xff0c;因此逐步取代电阻式触摸&#xff0c;成为当前…...

Go语言设计与实现 -- http服务器编程

Go http服务器编程 初始 http 是典型的 C/S 架构&#xff0c;客户端向服务端发送请求&#xff08;request&#xff09;&#xff0c;服务端做出应答&#xff08;response&#xff09;。 golang 的标准库 net/http 提供了 http 编程有关的接口&#xff0c;封装了内部TCP连接和…...

MySQL-视图

视图是什么&#xff1f; 一张虚表&#xff0c;和真实的表一样。视图包含一系列带有名称的行和列数据。视图是从一个或多个表中导出来的&#xff0c;我们可以通过insert&#xff0c;update&#xff0c;delete来操作视图。当通过视图看到的数据被修改时&#xff0c;相应的原表的数…...

都工作3年了,怎么能不懂双亲委派呢?(带你手把手断点源码)

&#x1f497;推荐阅读文章&#x1f497; &#x1f338;JavaSE系列&#x1f338;&#x1f449;1️⃣《JavaSE系列教程》&#x1f33a;MySQL系列&#x1f33a;&#x1f449;2️⃣《MySQL系列教程》&#x1f340;JavaWeb系列&#x1f340;&#x1f449;3️⃣《JavaWeb系列教程》…...

Hive 运行环境搭建

文章目录Hive 运行环境搭建一、Hive 安装部署1、安装hive2、MySQL 安装3、Hive 元数据配置到 Mysql1) 拷贝驱动2) 配置Metastore 到 MySQL3) 再次启动Hive4) 使用元数据服务的方式访问Hive二、使用Dbaver连接HiveHive 运行环境搭建 HIve 下载地址&#xff1a;http://archive.a…...

SAP ABAP 深度解析Smartform打印特殊符号等功能

ABAP 开发人员可以在 Smartform 输出上显示 SAP 图标或 SAP 符号。例如,需要在 SAP Smart Forms 文档上显示复选框形状的输出。SAP Smartform 文档上可以轻松显示空复选框、标记复选框以及 SAP 图标等特殊符号。 在 SAP Smartform 文档中添加一个新的文本节点。 1. 单击“更…...

React17+React Hook+TS4 最佳实践仿 Jira 企业级项目笔记

前言 个人笔记,记录个人过程,如有不对,敬请指出React17React HookTS4 最佳实践仿 Jira 企业级项目项目完成到第十章,剩下后面就没有看了,说的不是特别好 github地址:https://github.com/superBiuBiuMan/React-jira husky方便我们管理git hooks的工具 REST-API风格 https://zh…...

35- tensorboard的使用 (PyTorch系列) (深度学习)

知识要点 FashionMNIST数据集: 十种产品的分类. # T-shirt/top, Trouser, Pullover, Dress, Coat,Sandal, Shirt, Sneaker, Bag, Ankle Boot.writer SummaryWriter(run/fashion_mnist_experiment_1) # 网站显示一 tensorboard的使用 在网站显示pytorch的架构:1.1 …...

ChatGPT在工业领域的用法

在工业数字化时代&#xff0c;我们需要怎么样的ChatGPT&#xff1f; 近日&#xff0c;ChatGPT热度高居不下&#xff0c;强大的人机交互能力令人咋舌&#xff0c;在国内更是掀起一股讨论热潮。一时间&#xff0c;这场由ChatGPT引起的科技飓风&#xff0c;使得全球最顶尖科技力量…...

使用Chakra-UI封装简书的登录页面组件(React)

要求&#xff1a;使用chakra ui和react 框架将简书的登录页面的表单封装成独立的可重用的组件使用到的API&#xff1a;注册API请求方式&#xff1a;POST 请求地址&#xff1a;https://conduit.productionready.io/api/users请求数据: {"user":{ "username&quo…...

Three.js初试——基础概念(二)

前言 姊妹篇&#xff1a;Three.js初试——基础概念 介绍了 Three.js 的一些核心要素概念&#xff0c;这篇文章会讲一下它的关键要素概念。 之前我们了解到展示一个3D图像&#xff0c;必须要有场景、相机、渲染器这些核心要素&#xff0c;仅仅这些还不够&#xff0c;我们还需要…...

Qt音视频开发21-mpv内核万能属性机制

一、前言 搞过vlc内核后又顺带搞了搞mpv内核&#xff0c;mpv相比vlc&#xff0c;在文件数量、sdk开发便捷性方面绝对占优势的&#xff0c;单文件&#xff08;可能是静态编译&#xff09;&#xff0c;不像vlc带了一堆插件&#xff0c;通过各种属性来set和get值&#xff0c;后面…...

C语言学生随机抽号演讲计分系统

6.学生随机抽号演讲计分系统&#xff08;★★★★) 设计一款用于课程大作业检查或比赛计分的软件&#xff0c;基本功能: (1)设置本课程的学生总数 (2)根据本次参与的学生总数&#xff0c;随机抽取一个还未汇报演讲的学生的学号。 (3)每个学生汇报演讲完毕&#xff0c;输入该学生…...

如何用GHelper解决华硕笔记本性能管理难题:轻量级开源工具的完整指南

如何用GHelper解决华硕笔记本性能管理难题&#xff1a;轻量级开源工具的完整指南 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivoboo…...

FPGA LVDS输入作为模拟比较器的原理、设计与工程实践

1. 项目概述&#xff1a;当LVDS输入遇上模拟电压 最近几年&#xff0c;各大FPGA厂商都在力推自家的“模拟-数字转换器&#xff08;ADC&#xff09;IP核”&#xff0c;宣传其如何集成便利、性能优越。这让我这个老工程师不禁琢磨&#xff0c;这些IP核的底层原理究竟是什么&#…...

AI浏览器扩展实战:从原理到应用,提升网页AI体验

1. 项目概述与核心价值如果你和我一样&#xff0c;每天花大量时间在浏览器里和各类AI工具打交道&#xff0c;那你肯定也遇到过这些烦心事&#xff1a;在亚马逊上挑个商品&#xff0c;想问问AI哪个型号更划算&#xff0c;得手动复制粘贴商品信息到另一个聊天窗口&#xff1b;用C…...

S905M芯片盒子救砖实战:8189ETV无线与NAND存储的线刷固件修复指南

1. 救砖前的准备工作 当你发现手里的辽宁移动数码视讯Q5盒子突然变砖&#xff0c;先别急着扔。这种采用S905M芯片的盒子其实有很高的可玩性&#xff0c;尤其是搭配8189ETV无线模块和NAND存储的方案&#xff0c;只要掌握正确方法&#xff0c;救砖成功率很高。我前前后后折腾过二…...

一次搞清楚:Agent、Skill、Prompt、MCP

文章深入探讨了AI Agent在落地过程中面临的三大核心痛点&#xff1a;Prompt的临时性与不可复用性、Agent专业能力的难以沉淀与迁移、以及AI能力无法融入现有工程化流程。文章提出Agent Skills作为AI Agent的专业能力说明书&#xff0c;通过标准化能力描述与执行框架&#xff0c…...

CV论文工业落地避坑指南:从复现到部署的四大过滤维度

1. 这不是论文清单&#xff0c;而是一份“CV研究者晨间速读指南” 如果你每天打开arXiv、CVPR官网或Twitter刷到一堆标题带“Vision Transformer”“Diffusion”“Multimodal Alignment”的新论文&#xff0c;却总在摘要第一句就卡住——“We propose a novel hierarchical tok…...

Python轻量级Web框架fws:从核心原理到RESTful API实战

1. 项目概述&#xff1a;一个轻量级、可扩展的Web服务框架在构建现代Web应用时&#xff0c;我们常常面临一个选择&#xff1a;是使用功能全面但可能略显臃肿的成熟框架&#xff0c;还是从零开始&#xff0c;只为满足特定需求而构建一个精简的解决方案&#xff1f;前者提供了开箱…...

别再照搬Zynq教程了!手把手教你为Arty A7-35T配置MicroBlaze的SPI Flash启动(附时钟连接避坑指南)

别再照搬Zynq教程了&#xff01;手把手教你为Arty A7-35T配置MicroBlaze的SPI Flash启动&#xff08;附时钟连接避坑指南&#xff09; 在FPGA开发领域&#xff0c;Zynq系列因其ARMFPGA的异构架构而广受欢迎&#xff0c;网上教程资源也最为丰富。但这也导致了一个常见陷阱——许…...

ZCU102开发板新手避坑:从官网下载MIG例程到LED闪烁的完整流程(Vivado 2023.1)

ZCU102开发板新手避坑&#xff1a;从官网下载MIG例程到LED闪烁的完整流程&#xff08;Vivado 2023.1&#xff09; 刚拿到ZCU102开发板时&#xff0c;那种既兴奋又忐忑的心情我至今记忆犹新。作为Xilinx旗下的高端FPGA开发平台&#xff0c;ZCU102强大的性能和丰富的接口让它成为…...

Arm编译器浮点运算实现与优化实践

1. Arm编译器中的浮点运算实现机制在嵌入式开发领域&#xff0c;浮点运算的实现质量直接影响着数值计算的精度和系统性能。Arm编译器通过深度整合IEEE 754标准&#xff0c;为开发者提供了可靠的浮点运算支持。让我们先看一个典型场景&#xff1a;当使用printf输出浮点数时&…...