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

vue组件的通信

文章目录

  • 组件通信
    • 父传子
      • 父传子:通过prop来进行通信
    • 子传父
      • 先在父组件用@注册方法 , 在子组件触发使用 emit 函数
    • 组件间通信-平行组件
      • 使用事件总线的方法,也就是把整个vue提出来,当为一个事件总线
    • 其他组件通信
      • 父组件 provide来提供变量,然后再子组件中通过inject来注入变量

组件通信

父传子

父传子:通过prop来进行通信

        // 1.在子组件中声明props接收在父组件挂载的属性// 2.可以在子组件的template中任意使用// 3.在父组件绑定自定义的属性
<body><div id="app"><!-- 3.使用子组件 --><App></App></div><script src="./vue.js"></script><script>// 全局组件// 父传子:通过prop来进行通信// 1.在子组件中声明props接收在父组件挂载的属性// 2.可以在子组件的template中任意使用// 3.在父组件绑定自定义的属性Vue.component('Child',{template:`<div><h3>我是一个子组件</h3>   <h4>{{childData}}</h4></div>`,props:['childData']})const App = {data() {return {msg: '我是父组件传进来的值'}},template: `<div><Child :childData = 'msg'></Child></div>`,computed: {}}new Vue({el: '#app',data: {},components: {// 2.挂载子组件App}})</script>
</body>

效果

在这里插入图片描述

子传父

先在父组件用@注册方法 , 在子组件触发使用 emit 函数

<body><div id="app"><!-- 3.使用子组件 --><App></App></div><script src="./vue.js"></script><script>// 全局组件// 子往父传值// 1. 在父组件中 子组件上绑定自定义事件// 2. 在子组件中 触发原生的事件 // 3. 在事件函数通过this.$emit触发自定义的事件Vue.component('Child', {template: `<div><h3>我是一个子组件</h3>   <h4>{{childData}}</h4><input type="text" @input = 'handleInput'/></div>`,props: ['childData'],methods:{handleInput(e){const val = e.target.value;this.$emit('inputHandler',val);}},})const App = {data() {return {msg: '我是父组件传进来的值',newVal:''}},methods:{input(newVal){// console.log(newVal);this.newVal = newVal;}},template: `<div><div class='father'>数据:{{newVal}}</div><Child :childData = 'msg' @inputHandler = 'input'></Child></div>`,computed: {}}new Vue({el: '#app',data: {},components: {// 2.挂载子组件App}})</script>
</body>

效果 输入框输入数据 顶部数据同步变化

在这里插入图片描述

组件间通信-平行组件

使用事件总线的方法,也就是把整个vue提出来,当为一个事件总线

               const bus = new Vue();// 1. 中央事件总线 bus// 2. $on 绑定事件bus.$on('add',(n)=>{this.count+=n;})// 3.触发绑定的函数 // $emit 触发事件bus.$emit('add',1);

具体代码

<body><div id="app"><!-- 3.使用子组件 --><App></App></div><script src="./vue.js"></script><script>const bus = new Vue();// 中央事件总线 busVue.component('B', {data() {return {count: 0}},template: `<div>{{count}}</div>`,created(){// $on 绑定事件bus.$on('add',(n)=>{this.count+=n;})}})Vue.component('A', {data() {return {}},template: `<div><button @click='handleClick'>加入购物车</button> </div>`,methods:{handleClick(){// 触发绑定的函数 // $emit 触发事件bus.$emit('add',1);}}})const App = {data() {return {}},template: `<div><A></A><B></B></div>`,}new Vue({el: '#app',data: {},components: {// 2.挂载子组件App}})</script>
</body>

点击加入购物车 下面数字自动加一

在这里插入图片描述

其他组件通信

如果层级很深的情况,比如有嵌套情况,可使用provide和inject

父组件 provide来提供变量,然后再子组件中通过inject来注入变量

<body><div id="app"><!-- 3.使用子组件 --><App></App></div><script src="./vue.js"></script><script>// 插槽 留坑// props 验证规则// 组件的生命周期// UI库 element-ui// **** 如何设计组件? *****// provide// inject// 父组件 provide来提供变量,然后再子组件中通过inject来注入变量.无论组件嵌套多深// 中央事件总线 busVue.component('B', {data() {return {count: 0}},inject:['msg'],created(){console.log(this.msg);},template: `<div>{{msg}}</div>`,})Vue.component('A', {data() {return {}},created(){// console.log(this.$parent.$parent);// console.log(this.$children);console.log(this);},template: `<div><B></B></div>`})const App = {data() {return {title:"老爹"}},provide(){return {msg:"老爹的数据"}},template: `<div><A></A></div>`,}new Vue({el: '#app',data: {},components: {// 2.挂载子组件App}})</script>
</body>

相关文章:

vue组件的通信

文章目录 组件通信父传子父传子:通过prop来进行通信 子传父先在父组件用注册方法 , 在子组件触发使用 emit 函数 组件间通信-平行组件使用事件总线的方法,也就是把整个vue提出来,当为一个事件总线 其他组件通信父组件 provide来提供变量,然后再子组件中通过inject来注入变量 组…...

(搞定)排序数据结构(1)插入排序 选择排序+冒泡排序

目录 本章内容如下 一:插入排序 1.1插入排序 1.2希尔排序 二&#xff1a;选择排序 2.1选择排序 三:交换排序 3.1冒泡排序 一:插入排序 1.1直接插入排序 说到排序&#xff0c;其实在我们生活中非常常见&…...

C++ 类访问修饰符 public、private、protected

数据封装是面向对象编程的一个重要特点&#xff0c;它防止函数直接访问类类型的内部成员。类成员的访问限制是通过在类主体内部对各个区域标记 public、private、protected 来指定的。关键字 public、private、protected 称为访问修饰符。 一个类可以有多个 public、protected…...

pytorch学习笔记——BCE与CE

BCELoss的话只需要网络输出一个通道&#xff0c;CE Loss(Cross Entropy Loss)需要输出n_class个通道。 对于二分类任务可以使用CE Loss输出两个通道&#xff0c;也可以使用BCE Loss输出一个通道。 https://www.jianshu.com/p/5b01705368bb https://zhuanlan.zhihu.com/p/372628…...

win使用git(保姆级教程)

序言 上学期间用的git并不多&#xff0c;但是从研三实习以及后面工作来看&#xff0c;git是一项必备技能&#xff0c;所以在此来学习一下。 下载git安装包 打开网站&#xff0c;根据需求来下载&#xff1b;一般按照如下方式进行下载&#xff1a; 然后安装的时候记得按下图勾…...

Python图像处理-----几何变换

文章目录 一、图像几何变换理论二、图像平移2.1 使用数学公式的实现方式为:2.2 使用矩阵实现的方式为2.3 使用opencv三、图像缩放3.1 用数学式子表示为公式(a为缩放系数):3.2 用矩阵表示如公式所示:一、图像几何变换理论 图像几何变换不改变图像的像素值,在图像平面上进行像…...

如何正确选择研究方向?如何实现论文创新?

学术评价是遵循“质量第一”原则的,所以对于研究生来说,从一开始就要把路子走正,自觉树立精品意识,把精力高度集中到提高学位论文的质量上来。这里,根据本人多年来指导博士和硕士研究生的体会,就人文社科研究生学位论文的选题与创新略述管见。 学位论文选题的两个层面 …...

Postgresql源码(113)表达式JIT计算简单分析

相关 《Postgresql源码&#xff08;85&#xff09;查询执行——表达式解析器分析&#xff08;select 11如何执行&#xff09;》 《Postgresql源码&#xff08;113&#xff09;表达式JIT计算简单分析》 1 普通表达式计算 普通表达式计算发生在优化器preprocess_expression中&am…...

CMU15-213 课程笔记 04-Floating Point

文章目录 浮点数如何用二进制表示IEEE 浮点数标准IEEE 浮点数实现IEEE 浮点数在内存里 E exp - bias 计算指数M 1.xxx 尾数计算举例&#xff1a;对一个浮点数进行转换一些关于浮点数的计算等等 浮点数如何用二进制表示 计算机内部的浮点数不是这样存在内存里的&#xff08;至…...

DockerKubernetes ❀ Service下Port端口区分

文章目录 概述案例 概述 在Kubernetes中&#xff0c;Service&#xff08;svc&#xff09;是一种抽象机制&#xff0c;用于将一组 Pod 暴露给其他应用程序或服务。Service 可以有三种类型的端口&#xff1a; nodePort&#xff1a;这是 Service 在节点上公开的端口。可以使用此…...

【C++】笔试训练(一)

目录 一、选择题二、编程1、组队竞赛2、删除公共字符 一、选择题 1、以下for循环的执行次数是&#xff08;&#xff09; for (int x 0, y 0; (y 123) && (x < 4); x);A 是无限循环 B 循环次数不定 C 4次 D 3次 答案&#xff1a;C 2、以下程序的运行结果是&…...

数据结构与算法之集合: Leetcode 349. 两个数组的交集 (Typescript版)

两个数组的交集 https://leetcode.cn/problems/intersection-of-two-arrays/description/ 描述 给定两个数组 nums1 和 nums2 &#xff0c;返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。 示例 1 输入&#xff1a;nums1 [1,2,…...

Unity 内存性能分析器 (Memory Profiler)

一、 安装 安装有两种方式一&#xff1a; add package : com.unity.memoryprofiler方式二&#xff1a; From Packages : Unity Registry 搜索 Memory Profiler 二、 使用 打开&#xff1a;Windows - > Analysis - > Memory Profiler 打开MemoryProfiler界面&#xff0…...

前端携带Bearer Token

前端携带Bearer Token 在前端使用 axios 发送请求时&#xff0c;可以通过设置请求头来携带 Bearer Token。Bearer Token 是一种常用的身份验证方式&#xff0c;它通常用于 OAuth2 授权流程中。 要在 axios 中携带 Bearer Token&#xff0c;可以通过设置 Authorization 请求头…...

leetcode 周赛 364

参考视频&#xff1a; 单调栈【力扣周赛 364】 文章目录 8048. 最大二进制奇数100049. 美丽塔 I100048. 美丽塔 II100047. 统计树中的合法路径数目 8048. 最大二进制奇数 题目链接 给你一个 二进制 字符串 s &#xff0c;其中至少包含一个 1 。 你必须按某种方式 重新排列 字…...

开机自启动Linux and windows

1、背景 服务器由于更新等原因重启&#xff0c;部署到该服务上的响应的应用需要自启动 2、Linux 2.1 方式一 编写启动应用的sh脚本授权该脚本权限 chmod 777 xxx.sh 修改rc.loacl 位置&#xff1a;/etc/rc.local 脚本&#xff1a;sh /home/xxxx.sh & 授权rc.local …...

科技云报道:大模型的阴面:无法忽视的安全隐忧

科技云报道原创。 在AI大模型的身上&#xff0c;竟也出现了“to be or not to be”问题。 争议是伴随着大模型的能力惊艳四座而来的&#xff0c;争议的核心问题在于安全。安全有两个方面&#xff0c;一个是大模型带来的对人类伦理的思考&#xff0c;一个是大模型本身带来的隐…...

2023年前端流行什么技术和框架了?

Web前端三大主流框架有React、Vue.js和Angular&#xff0c;由于接触过Vue.js&#xff0c;接下来主讲最新的Vue3.0&#xff01; Vue3.0作为最新版本的Vue.js框架&#xff0c;拥有更强大的性能和更丰富的功能&#xff0c;为低代码开发平台注入了全新的活力。而JNPF快速开发平台作…...

Nginx 背锅解析漏洞

Nginx 背锅解析漏洞 文章目录 Nginx 背锅解析漏洞1 在线漏洞解读:2 环境搭建3 影响版本&#xff1a;4 漏洞复现4.1 访问页面4.2 上传文件 4.3 上传失败4.4 使用bp进行分析包4.5 对返回图片位置进行访问4.6 执行php代码技巧-图片后缀加./php4.7 分析原因 --》cgi.fix_pathinfo--…...

AI与传统数据库 - ChatGPT风过之后 | 从Duet AI说开来

作者&#xff1a;Ni Demai&#xff0c;是NineData数据库产品专家&#xff0c;曾任阿里云数据库国际产品总负责人&#xff0c;华为高斯 GaussDB 创始团队核心架构师&#xff0c;IBM Db2 资深研发工程师。 Demai 专注 Cloud-Native database 架构设计&#xff0c;分析型 MPP&…...

C++初阶-list的底层

目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...

【kafka】Golang实现分布式Masscan任务调度系统

要求&#xff1a; 输出两个程序&#xff0c;一个命令行程序&#xff08;命令行参数用flag&#xff09;和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽&#xff0c;然后将消息推送到kafka里面。 服务端程序&#xff1a; 从kafka消费者接收…...

Java - Mysql数据类型对应

Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...

linux arm系统烧录

1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 &#xff08;忘了有没有这步了 估计有&#xff09; 刷机程序 和 镜像 就不提供了。要刷的时…...

TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案

一、TRS收益互换的本质与业务逻辑 &#xff08;一&#xff09;概念解析 TRS&#xff08;Total Return Swap&#xff09;收益互换是一种金融衍生工具&#xff0c;指交易双方约定在未来一定期限内&#xff0c;基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)

🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...

Java线上CPU飙高问题排查全指南

一、引言 在Java应用的线上运行环境中&#xff0c;CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时&#xff0c;通常会导致应用响应缓慢&#xff0c;甚至服务不可用&#xff0c;严重影响用户体验和业务运行。因此&#xff0c;掌握一套科学有效的CPU飙高问题排查方法&…...

PAN/FPN

import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...

招商蛇口 | 执笔CID,启幕低密生活新境

作为中国城市生长的力量&#xff0c;招商蛇口以“美好生活承载者”为使命&#xff0c;深耕全球111座城市&#xff0c;以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子&#xff0c;招商蛇口始终与城市发展同频共振&#xff0c;以建筑诠释对土地与生活的…...

Netty从入门到进阶(二)

二、Netty入门 1. 概述 1.1 Netty是什么 Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty是一个异步的、基于事件驱动的网络应用框架&#xff0c;用于…...