Vue电商项目--组件通信

news2025/1/10 20:39:47

组件通信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.coloradmin.cn/o/871096.html

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

相关文章

SpringBoot3集成Quartz

标签&#xff1a;Quartz.Job.Scheduler&#xff1b; 一、简介 Quartz由Java编写的功能丰富的开源作业调度框架&#xff0c;可以集成到几乎任何Java应用程序中&#xff0c;并且能够创建多个作业调度&#xff1b; 在实际的业务中&#xff0c;有很多场景依赖定时任务&#xff0c…

438. 找到字符串中所有字母异位词---字典匹配滑动窗口才是最优解

438. 找到字符串中所有字母异位词 原题链接&#xff1a;完成情况&#xff1a;解题思路&#xff1a;一开始字典匹配 参考代码&#xff1a;错误傻逼代码AC代码 原题链接&#xff1a; 438. 找到字符串中所有字母异位词 https://leetcode.cn/problems/find-all-anagrams-in-a-st…

CUDA执行模型

一、CUDA执行模型概述 二、线程束执行 1. 线程束与线程块 线程束是SM中基本的执行单元。 当一个线程块的网格被启动后&#xff0c;网格中的线程块分布在SM中。 一旦线程块被调度到一个SM中&#xff0c;线程块中的线程会被进一步划分成线程束。 一个线程束由32个连续的线程…

week4刷题

题解: F(n)F(n−1)F(n−2) 由于斐波那契数存在递推关系&#xff0c;因此可以使用动态规划求解。动态规划的状态转移方程即为上述递推关系&#xff0c;边界条件为 F(0)F(0)F(0) 和 F(1)F(1)F(1)。 class Solution { public:int fib(int n) {int MOD 1000000007;if (n < 2)…

Nginx 安装与部署

文章和代码已经归档至【Github仓库&#xff1a;https://github.com/timerring/front-end-tutorial 】或者公众号【AIShareLab】回复 nginx 也可获取。 文章目录 虚拟机安装CentOS7.4Linux配置配置上网配置静态ip Nginx的安装版本区别备份克隆 安装编译安装报错解决 启动Nginx防…

SpringBoot+Mybatis-Plus实现增删改查超详细步骤

目录 一、介绍 二、前期准备工作 &#xff08;一&#xff09; 创建springboot项目和创建数据库 三、项目配置 &#xff08;一&#xff09;pom.xl导入相关依赖 1.导入依赖 &#xff08;二&#xff09;yml文件中配置连接数据库 2.配置yml文件 四、代码的编写 数据库展…

阿里云FRP内网穿透挂载多台服务器

1. FRP介绍 FRP (Fast Reverse Proxy) 是比较流行的一款。FRP 是一个免费开源的用于内网穿透的反向代理应用&#xff0c;它支持 TCP、UDP 协议&#xff0c; 也为 http 和 https 协议提供了额外的支持。你可以粗略理解它是一个中转站&#xff0c; 帮你实现 公网 ←→ FRP(服务器…

vue复习。从安装到使用

vue官网&#xff1a;cn.vuejs.org vue安装 cnpm install -g vue/cli 查看是否安装成功 vue --version 创建一个项目 vue create vue-demo(项目名称) 这个取消掉。空格可选中或者取消。 运行项目&#xff1a; cd 进入到项目下 npm run serve 运行成功后&#xff0c;访问这…

Leetcode 21. 合并两个有序链表

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

【C语言练习】——找出单身狗、详解atoi函数

目录 一.找出单身狗版本1版本2 二.atoi函数介绍atoi函数atoi函数的模拟实现 一.找出单身狗 版本1 题目&#xff1a; 一个数组中只有一个数字是出现一次&#xff0c;其他所有数字都出现了两次 找出这一个只出现一次的数字 一个数组比如是1、2、3、4、5、1、2、3、4 只有5出现一…

【力扣每日一题】2023.8.13 合并两个有序数组

目录 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 代码&#xff1a; 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 题目给我们两个升序数组&#xff0c;让我们合并它们&#xff0c;要求合并之后仍然是升序&#xff0c;并且这个合并操作是在数组1原地修改…

前沿分享-中距离射频取电

目前来看&#xff0c;微能源有四种技术路线&#xff0c;一是环境光采集、温差转换采集、无线射频采集和振动能量采集。 无线射频微能源是在通信设备通信过程中自然产生的&#xff0c;可以通过射频能量芯片实现无线射频取电&#xff0c;能瞬间大功率储电和安全驱动负载。 通过射…

基于微信小程序的应届大学生招聘平台的设计与实现

伴随着社会以及科学技术的发展&#xff0c;互联网已经渗透在人们的身边&#xff0c;网络慢慢的变成了人们的生活必不可少的一部分&#xff0c;紧接着众多智能手机飞速的发展&#xff0c;小程序这一名词已不陌生&#xff0c;越来越多的企业、公司、高校、医院等机构都会使用小程…

Linux上的五种IO模型

文章目录 五种模型阻塞非阻塞IO复用信号驱动异步 五种模型 阻塞非阻塞复用IO异步 阻塞 &#x1f446;read同步IO 非阻塞 EAGAIN&#xff1a;没有事件到达&#xff0c;返回值为-1&#xff0c; errno为EAGAIN IO复用 信号驱动 异步 &#x1f446;&#xff1a;异步IO&#xff…

Leetcode数组篇 Day1

移除元素&#xff08;暴力版&#xff09; 1.注意越界问题&#xff1a;ji1 起点&#xff0c;j < size 移除元素&#xff08;双指针版&#xff09; 1.快慢指针&#xff0c;新数组就是不含有目标元素的数组 快&#xff1a;获取新数组中的元素 慢&#xff1a;获取新数组需更新位…

【佳佳怪文献分享】通过跨模态监督学习视觉运动

标题&#xff1a;Learning Visual Locomotion with Cross-Modal Supervision 作者&#xff1a;Antonio Loquercio, Ashish Kumar, Jitendra Malik 来源&#xff1a;2023 IEEE International Conference on Robotics and Automation (ICRA 2023) 这是佳佳怪分享的第4篇文章 …

电视企业继续乱收费,消费者则再用脚投票,销量加速下滑

分析机构给出的7月份数据显示中国的电视销量同比下滑了14.1%&#xff0c;环比则下滑了23.4%&#xff0c;消费者继续用脚投票&#xff0c;而电视企业也在压榨最后一滴利润&#xff0c;继续乱收费&#xff0c;引发消费者的不满。 近几年来国内电视市场价格战异常激烈&#xff0c;…

手把手教你使用USB的CDC+MSC复合设备(基于stm32f407)

学习 1 实验环境与说明2 USB CDC2.1 CDC代码生成2.2 通信设备&#xff08;CDC&#xff09;描述符2.2.1 设备描述符2.2.2 配置描述符 2.3 调试 3 USB MSC3.1 MSC代码生成3.2 大容量存储设备&#xff08;MSC&#xff09;描述符3.2.1 设备描述符2.2.2 配置描述符 3.3 调试 4 USB复…

Redis_亿级访问量数据处理

11. 亿级访问量数据处理 11.1 场景表述 手机APP用户登录信息&#xff0c;一天用户登录ID或设备ID电商或者美团平台&#xff0c;一个商品对应的评论文章对应的评论APP上有打卡信息网站上访问量统计统计新增用户第二天还留存商品评论的排序月活统计统计独立访客(Unique Vistito…

LeetCode150道面试经典题--单词规律(简单)

1.题目 给定一种规律 pattern 和一个字符串 s &#xff0c;判断 s 是否遵循相同的规律。 这里的 遵循 指完全匹配&#xff0c;例如&#xff0c; pattern 里的每个字母和字符串 s 中的每个非空单词之间存在着双向连接的对应规律。 2.示例 pattern"abba" s "c…