Vue电商项目--组件通信

组件通信6种方式

第一种:props

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

注意事项:

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

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

书写方式:3种

【‘todos’】,{type:Array},{type:Array},{type:Array,default:[]}

小提示:路由的props

书写形式:布尔值,对象,函数形式

第二种:自定义事件

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

$on与$emit

第三种:全局事件总线$bus

适用于场景:万能

Vue.prototype.$bus=this

第四种:pubsub-js,在react框架中使用比较多(发布与订阅)

适用与场景:万能

第五种:vuex

适用与场景:万能

第六种:插槽

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

默认插槽

具名插槽

作用域插槽

自定义事件深入

原生的按钮会触发handler事件,但是组件event却不会。因为event1不是原生dom节点,绑定的click不是原生dom事件,而是自定义事件了。

如果我们需要使用原生的dom事件,那么我们需要加修饰符nactive(可以把自定义事件变成原生dom事件)

 其实原理就是用到了事件的委派

  自定义事件需要$emit来绑定 

v-model深入

v-model实现原理

原生的input的方式也能实现v-model的效果

原生DOM当中有oninput事件,它经常结合表单元素一起使用,当表单元素文本内容发送改变的时候就会发出一次回调

vue2就是通过value与input事件结合实现v-model功能

通过v-model实现父子组件数据同步

这样要注意这俩个:value是不一样的 组件上的props

 这俩个都可以实现父子组件通信,下面是缩写

效果是一样的

v-model实现原理:value与input事件实现的,而且还需要注意可以通过v-model实现父子组件数据 

就是采用原理的方式将v-model就是一个@input的事件,然后将msg当做参数传递过去,通过props:['value']来接收input的value值,再然后通过$emit来发送给父组件中使用@input(当你使用v-model的时候就会默认绑定这个),把$event.target.value发送过去 

sync属性修饰符

$event就是自定义事件传过来的实参

 为了防止我看不懂,我没有采用它这种简写的方式。而是通过完整的方式实现它这种效果

 如果使用sync修饰符

 而加上sync修饰符,它有俩种含义:第一,父组件给子组件传递props money

第二,给当前子组件绑定了一个自定义事件,而且事件名称即为update:money

 效果也是一样,但是更方便

这里有一个注意点<new :money.sync="money" ></new>

 那么子组件也应该为这个开头<button @click="$emit('update:money',money-100)">-100</button>

而这个update是我们添加了sync的时候自动给我们添加上的

总结:属性修饰符sync

可以实现父子组件数据同步

:money.sync ,代表父组件给子组件传递props[money] 给当前子组件绑定了一个自定义事件(update:money) 

$attrs与$listeners

首先使用element-ui的的button 例如我们给他设置大小就用size

现在又一个需求,也就是我们封装一个类似于这个的组件,并且鼠标移动上去,有提示信息

 我们在父组件上设置一个自定义属性

 

 而我们可以通过$attrs的方式来接收父组件给我们传递过来的参数

这里我们需要知道一件事,如果props接受过的数据,$attrs中获取不到信息了

 带一个提示的功能我们可以在外面添加一个a标签

这样我们就可以把全部的属性绑定到子组件中,但是要注意不能使用:

 这里还有一个属性是$listeners,它是可以监听到子给父传递的自定义事件

 然后不能用简写的方式,需要完整的。这样就能绑定父组件所有的自定义事件了 

$children与$parent

 这里有一个需求,那就是父组件找子组件借钱,父加钱,子减钱。那如何拿到子组件的money呢?

第一种方式ref

 能拿到

 那么如果向所有的孩子借钱,当然。我们可以采用ref的方式,但是太麻烦了。组件实例自身有一个属性$children,可以获取到当前组件当中,全部子组件

 $children是组件实例的属性,可以获取当前组件的全部子组件【数组】 

父拿子搞定。现在弄子给父

$parent组件实例的属性,可以获取当前子组件的父组件,进而可以操作父组件的数据与方法 

混入mixin

如果项目当中出现很多结构类似功能,想到组件复用。

如果项目当中很多的组件js业务逻辑相似,就想到mixin。【可以把多个组件js部分重复,相似的地方】

就是我们之前写的代码的子组件的methods的逻辑都是相同的,此时就可以用到mixin

对外暴露相同的js业务逻辑 

 应用 

作用域插槽

插槽:可以实现父子组件通信(通信的结构)

默认插槽

具名插槽

作用域插槽:子组件的数据来源于父组件,子组件决定不了自身结构与外观

父组件然后给子组件传结构 

 子组件把每条数据回传给父组件 

这样就有颜色,可以区别开

像下面这个就是子给父回传一个index

 

 回传的是一个对象,我们完全可以解构出来

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

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

相关文章

期权定价模型系列【1】—BSM通用式模型

这是期权定价模型专栏的第一篇文章&#xff0c;此专栏旨在分享一些期权定价模型&#xff0c;将会从最基础的BSM模型开始写起&#xff0c;逐步扩散到蒙特卡洛模拟、二叉树等数值法模型&#xff0c;以及跳跃扩散模型、随机波动率模型&#xff0c;神经网络模型等等。 如果你觉得有…

Java负载均衡算法实现与原理分析(轮询、随机、哈希、加权、最小连接)

文章目录 一、负载均衡算法概述二、轮询&#xff08;RoundRobin&#xff09;算法1、概述2、Java实现轮询算法3、优缺点 三、随机&#xff08;Random&#xff09;算法1、概述2、Java实现随机算法 四、源地址哈希&#xff08;Hash&#xff09;算法1、概述2、Java实现地址哈希算法…

198、仿真-基于51单片机函数波形发生器调幅度频率波形Proteus仿真(程序+Proteus仿真+原理图+流程图+元器件清单+配套资料等)

毕设帮助、开题指导、技术解答(有偿)见文未 目录 一、硬件设计 二、设计功能 三、Proteus仿真图 四、原理图 五、程序源码 资料包括&#xff1a; 需要完整的资料可以点击下面的名片加下我&#xff0c;找我要资源压缩包的百度网盘下载地址及提取码。 方案选择 单片机的选…

Leetcode-每日一题【剑指 Offer 27. 二叉树的镜像】

题目 请完成一个函数&#xff0c;输入一个二叉树&#xff0c;该函数输出它的镜像。 例如输入&#xff1a; 4 / \ 2 7 / \ / \ 1 3 6 9 镜像输出&#xff1a; 4 / \ 7 2 / \ / \ 9 6 3 1 示例 1&#xff1a; 输入&#xff1a;root [4,2,…

(vue)获取对象的键遍历,同时循环el-tab页展示key及内容

(vue)获取对象的键遍历&#xff0c;同时循环el-tab页展示key及内容 效果&#xff1a; 数据结构&#xff1a; "statusData": {"订购广度": [ {"id": 11, "ztName": "广", …

YAPi在线接口文档简单案例(结合Vue前端Demo)

在前后端分离开发中&#xff0c;我们都是基于文档进行开发&#xff0c;那前端人员有时候无法马上拿到后端的数据&#xff0c;该怎么办&#xff1f;我们一般采用mock模拟伪造数据直接进行测试&#xff0c;本篇文章主要介绍YApi在线接口文档的简单使用&#xff0c;并结合Vue的小d…

[保研/考研机试] KY183 素数 北京航空航天大学复试上机题 C++实现

题目链接&#xff1a; 素数https://www.nowcoder.com/share/jump/437195121691718444910 描述 输入一个整数n(2<n<10000)&#xff0c;要求输出所有从1到这个整数之间(不包括1和这个整数)个位为1的素数&#xff0c;如果没有则输出-1。 输入描述&#xff1a; 输入有多…

vue3+element-plus点击列表中的图片预览时,图片被表格覆盖

文章目录 问题解决 问题 视觉 点击图片进行预览&#xff0c;但还能继续选中其他的图片进行预览&#xff0c;鼠标放在表格上&#xff0c;那一行表格也会选中&#xff0c;如图所示第一行的效果。 代码 <el-table-column prop"id" label"ID" width"…

云原生K8S------Yaml文件详解

目录 一&#xff1a;K8S支持的文件格式 1&#xff0c;yaml和json的主要区别 2&#xff0c;YAML语言格式 二&#xff1a;yuml 1、查看 api 资源版本标签 2、写一个yaml文件demo 3、创建service服务对外提供访问并测试 4、详解k8s中的port 三&#xff1a;文件生成 1、kubec…

Vue2到3 Day5 全套学习内容,众多案例上手(内付源码)

简介&#xff1a; Vue2到3 Day1-3 全套学习内容&#xff0c;众多案例上手&#xff08;内付源码&#xff09;_星辰大海1412的博客-CSDN博客本文是一篇入门级的Vue.js介绍文章&#xff0c;旨在帮助读者了解Vue.js框架的基本概念和核心功能。Vue.js是一款流行的JavaScript前端框架…

类与对象(加深)

目录 1.类的6个默认成员函数 2. 构造函数 2.1 概念 2.2 特性 3.析构函数 3.1 概念 3.2 特性 4. 拷贝构造函数 4.1 概念 4.2 特征 5.赋值运算符重载 5.1 运算符重载 5.2 赋值运算符重载 6.const成员 7.取地址及const取地址操作符重载 1.类的6个默认成员函数 如果…

Mysql 和Oracle的区别

、mysql与oracle都是关系型数据库&#xff0c;Oracle是大型数据库&#xff0c;而MySQL是中小型数据库。但是MySQL是开源的&#xff0c;但是Oracle是收费的&#xff0c;而且比较贵。 1 2 mysql默认端口&#xff1a;3306&#xff0c;默认用户&#xff1a;root oracle默认端口&…

shell脚本开发

shell脚本语言属于弱类型的语言&#xff0c;无需声明变量类型&#xff0c;直接定义使用 shell语言定义的变量&#xff0c;数据类型默认都是字符串类型 调用历史记录命令&#xff1a;&#xff01; 历史记录id

netty基础与原理

Netty线程模型和Reactor模式 简介&#xff1a;reactor模式 和 Netty线程模型 设计模式——Reactor模式&#xff08;反应器设计模式&#xff09;&#xff0c;是一种基于 事件驱动的设计模式&#xff0c;在事件驱动的应用中&#xff0c;将一个或多个客户的 服务请求分离&#x…

【ARM Cache 系列文章 9 -- ARM big.LITTLE技术】

文章目录 big.LITTLE 技术背景big.LITTLE 技术详解big.LITTLE 硬件要求 big.LITTLE 软件模型CPU MigrationGlobal Task SchedulingGlobal Task Scheduling比CPU Migration的优势 转自&#xff1a;https://zhuanlan.zhihu.com/p/630981648 如有侵权&#xff0c;请联系删除 big.L…

Leetcode 21. 合并两个有序链表

题目描述 题目链接&#xff1a;https://leetcode.cn/problems/merge-two-sorted-lists/description/ 思路 两个链表都是升序链表&#xff0c;新建一个链表&#xff0c;引入伪头节点作为辅助节点&#xff0c;将各节点添加到伪节点之后&#xff0c;再用一个cur节点指向新链表的…

2022年03月 C/C++(一级)真题解析#中国电子学会#全国青少年软件编程等级考试

第1题:双精度浮点数的输入输出 输入一个双精度浮点数,保留8位小数,输出这个浮点数。 时间限制:1000 内存限制:65536 输入 只有一行,一个双精度浮点数。 输出 一行,保留8位小数的浮点数。 样例输入 3.1415926535798932 样例输出 3.14159265 下面是一个使用C语言编写的双精…

51单片机学习--红外遥控(外部中断)

需要利用下面这个红外接收头&#xff0c;OUT口会发出红外信号对应的高低电平&#xff0c;由于发送的速度很快&#xff0c;所以需要把OUT引脚接在外部中断引脚上&#xff0c;当OUT一旦产生下降沿&#xff0c;马上进中断&#xff0c;这样响应会更及时。 外部中断引脚位于P3_2和P…

全球八分之一的河流受到缺氧影响

一项全球研究发现&#xff0c;世界各地河流中的溶解氧含量低得危险。缺氧的真实发生率可能更高。 小型、低梯度的城市河流&#xff0c;例如图中北卡罗来纳州的那条河流&#xff0c;是最容易缺氧的河流之一。图片来源&#xff1a;乔安娜布拉扎克 2023 年 3 月&#xff0c;《卫报…

大脑营行|“福安市华龙教育基金”支持家乡教育事业发展

8月8日&#xff0c;福安市松罗中学举行“福安市华龙教育基金”中考奖学金颁发仪式。福安市松罗乡党委书记钟文、乡长郑仁寿、福安市人民政府教育督导室副科级督导员&#xff08;片区领导&#xff09;陈秦、校长张明亮、各村支部书记、家长代表、受奖学生&#xff0c;校领导班子…