Vue 总结:组件间的通讯方式(父子传参、兄弟传参、任意两个组件间传参、多个组件嵌套传参)

Vuex详细介绍 Vuex是什么,安装及应用 阅读详情

Vue 总结:组件间的通讯方式(父子传参、兄弟传参、任意两个组件间传参、多个组件嵌套传参)


Vue的通讯的方式:

1. props、emit(最常用的父子通讯方式)

父组件传入属性,子组件通过props接收,就可以在内部this.XXX的方式使用
子组件$emit(事件名,传递的参数)向外弹出一个自定义事件, 在父组件中的属性监听事件,同时也能获取子组件传出来的参数

//	父组件
<hello-world msg="hello world!" @confirm="handleConfirm"><hello-world>
//	子组件
 props: {
    msg: {
      type: String,
      default: ''
    }
  },
  methods:{
  	handleEmitParent(){
  		this.$emit('confirm', list)
  	}
  }

2. 事件总线 EventBus (常用任意两个组件之间通讯)

原理:注册的事件存起来,等触发事件时再调用。定义一个类去处理事件,并挂载到Vue实例的this上即可注册和触发事件,也可拓展一些事件管理


class Bus {
  constructor () {
    this.callbackList = {}
  }

  $on (name, callback) {
    // 注册事件
    this.callbackList[name] ? this.callbackList[name].push(callback) : (this.callbackList[name] = [callback])
  }

  $emit (name, args) {
    // 触发事件
    if (this.callbackList[name]) {
      this.callbackList[name].forEach(cb => cb(args))
    }
  }
}

Vue.prototype.$bus = new Bus()

// 任意两个组件中
// 组件一:在组件的 mounted() 去注册事件
this.$bus.$on('confirm', handleConfirm)

// 组件二:触发事件(如:点击事件后执行触发事件即可)
this.$bus.$emit('confirm', list)


3. Vuex 状态管理(vue的核心插件、用于任意组件的任意通讯,需注意刷新后有可能vuex数据会丢失)

创建全局唯一的状态管理仓库(store),有同步(mutations)、异步(actions)的方式去管理数据,有缓存数据(getters),还能分成各个模块(modules)易于维护,详细可访问下方Vuex文档学习

https://vuex.vuejs.org/zh/

4. $parent / $root / $children (不推荐使用,不易于后期维护,一旦页面层次发生变化,就需要重新考虑层级关系)

以父组件为桥梁去注册事件和触发事件来实现的兄弟组件通讯

// 子组件一:
this.$patent.$on('confirm', handleConfirm)
// 子组件二:
this.$patent.$emit('confirm', list)

获取第一个子组件的数据和调用根组件的方法

// 获取第一个子组件的数据
console.log(this.$children[0].msg)

// 调用根组件的方法
this.$root.handleRoot()

5. $ref (引用的方式获取子节点)

常用于父组件调用子组件的方法(如:列表数据变化通知子组件重新渲染列表等)
Vue提供了 $refs 来存储当前所有设置了 ref 属性的组件
PS:因为需要渲染完才能获取到 ref 属性,所以建议在mounted后去调用,否则有可能会获取不到
PS:如果定义了两个相同名字的ref则会 this. $refs.XXX将会是一个数组

// 在template中
// ...
<hello-world ref="hello"></hello-world>
// ...
export default {
  mounted(){
    // 调用引用的子组件的方法
    this.$refs.hello.handleRef()
  }
}

6. $attrs / $listeners(常用于对原生组件的封装)

$attrs 可以获取父组件传进来但没有通过props接收的属性

// 父组件
<Child :title="title" :desc="desc" >/>

//  子组件内
<template>
<div>
  <h2>{{title}}</h2>
  <p>{{$attrs.desc}}</p>
</div>
</template>	
<script>
export default {
  props: ['title']
  // ...
}
<script>


$listeners 会展开父组件的所有监听的事件(click事件等)常用于更高层级的封装
举个例子(需求):一个页面中有两个组件的点击事件触发方法是一样的"

//  父组件
<div>
  <child-first @click="handleClick"></child-first>
  <child-second @click="handleClick"></child-second>
</div>
export default {
  methods: {
    handleClick: (){
      alert('hello')
    }
  }
}

// child-first
<div v-on="$listeners"></div>

// child-second
<div v-on="$listeners"></div>

7. provide / inject (祖先及其后代传值)

常用一些多个组件嵌套封装,一个顶层组件内部的后代组件需要用到顶层组件的数据就使用这种方式

//  顶层组件
export default {
  provide(){
    return {
      msg: 'hello world!'
    }
  }
}

//  后代组件
export default {
  inject: ['msg']
}

zabbix系列:内存VM.MEMORY.SIZE监控之total、free、pused、available 参数说明 free -m buffer是即将要被写入磁盘的,而cache是被从磁盘中读出来的. zabbix Web total:1046/1024=1.02G Available:216/1046=20.65% zabbix参数 total- 总物理内存. free- 可用内存. active- 内存当前使用或最近使用,所以它在RAM中。 inactive- 未使用内存. wired- 被标记为始终驻留在RAM中的内... 阅读详情

相关推荐

让 AI 学会“慢思考”:MCP Sequential Thinking 深度部署与使用指南

摘要: MCP Sequential Thinking 是一种让AI具备"慢思考"能力的技术,通过动态调整思维路径解决复杂问题。本文详细介绍了在Windows、macOS和Linux系统下的部署方法,包括环境准备、配置文件修改等步骤。该技术通过"产生想法-评估需求-修正路径"的循环机制,显著提升AI在代码设计、数学证明等复杂任务中的表现。文章还提供了验证安装方法、使用示例和常见问题解答,帮助开发者解锁AI的深层思考能力。(149字)

weixin_43236925的博客 1908

Vue中组件间的通讯方式

1、$emit/props(父子组件) 在父组件中,引用子组件,并将子组件需要的name属性传递过去。 <Son :name="name"></Son> 在子组件中通过props进行接收。父组件传过来的值是不允许修改的,想要修改必须通知父组件,让父组件来改 props: ['name'] 在子组件中通过$emit方法,来触发一个名为‘send’的方法,并将参数传递过去。 send() { this.$emit('send', '收到名字'); } 在父组件中将‘send’绑

qq_44675204的博客 744

FPGA驱动OV5640:从SCCB协议到图像数据采集的实战解析

本文详细解析了使用FPGA驱动OV5640摄像头模组的完整流程,从SCCB协议通信、寄存器配置到图像数据采集。重点阐述了SCCB(与I2C类似)协议的实现细节、关键的上电复位时序,以及如何通过状态机解析视频流时序并捕获图像数据,为嵌入式视觉开发提供了实战指南。

weixin_29191761的博客 187

Vue 组件通信方式总结,进来看看你都知道吗

vue组件通信的方式,这是在面试中一个非常高频的问题,我刚开始找实习便经常遇到这个问题,当时只知道回到props和 $emit,后来随着学习的深入,才发现vue组件的通信方式竟然有这么多!...

前端达人 385

SoC 验证老兵手册

《SoC验证老兵手册》摘要: 针对大型SoC系统级验证,手册提出Cache+DMA场景的高效验证方案。核心方法采用C测试用例(模拟Linux/RTOS真实场景)触发隐蔽bug,配合SV Checker精准捕捉硬件问题(如DMA读取脏缓存行)。特别强调验证方法论:C用例负责复杂行为模拟,SV专注RTL正确性检查;利用Linux天然并发性暴露硬件缺陷。手册还包含模拟面试攻防技巧,指出验证架构师需具备定义Stimulus/Checker边界的能力。终极判断标准:未通过Linux下Cache+DMA+SMP+中断测

元直的博客 1371

Delta并联机构运动学正逆解:从理论建模到Matlab实战

本文深入解析了Delta并联机构运动学正逆解的核心原理与实战方法。通过几何建模,清晰阐述了其“逆解简单、正解复杂”的特性,并详细推导了基于一元二次方程的逆解解析算法与采用牛顿-拉弗森迭代法的正解数值算法。文章结合完整的Matlab代码实例,从符号推导到数值求解,提供了从理论到实践的完整实现路径,助力机器人开发者掌握Delta并联机构的运动学分析。

weixin_29096377的博客 433

vue2.x 兄弟组件之间的数据传递

兄弟组件的数据传递 兄弟组件是指两者都没有互相引用,例如A组件没有使用B组件,B组件没有使用A组件。之间没有任何联系。 兄弟组件的数据传递,需要创建一个中间传递项,创建js文件。导入vue,导出一个vue实例 A组件是一个发送数据的组件,要定义一个自定义事件,发送传递的值。 B组件是一个接受数据的组件,要定义一个触发方法,$on ement js文件创建 import Vue from 'vue' export default new Vue() A组件发送数据 <template>

yc_1314的博客 1872

用RK3588 NPU加速人脸识别:从本地测试到服务器部署的完整流程(含ONNX模型)

本文详细介绍了如何利用RK3588 NPU加速人脸识别系统,从模型优化到高并发服务部署的全流程。通过RetinaFace和FaceNet模型的协同推理,结合ONNX模型转换和NPU特有优化技巧,显著提升识别效率。文章还涵盖了gRPC通信架构设计、性能压测及实际部署经验,为开发者提供了一套完整的解决方案。

weixin_29058331的博客 464

vue 的组件之间传值(父子组件,兄弟组件,祖孙组件,任意组件)

1. props / $emit props 父组件传值给子组件 $emit 子组件传值给父组件 props: // 父组件 <template> <div> <Child v-bind:list="users"></Child> </div> </template> <script> import Child from "./components/Child" //子组件

Smile0L0的博客 844

Qt5.15.2安卓开发环境配置保姆级教程(含JDK8、SDK33、NDK21.4及Gradle国内镜像避坑指南)

本文提供Qt5.15.2安卓开发环境配置的完整教程,涵盖JDK8、SDK33、NDK21.4及Gradle国内镜像设置,帮助开发者快速搭建开发环境并避免常见问题。通过详细步骤和实战技巧,解决依赖冲突、网络超时等难题,提升开发效率。

weixin_28730353的博客 203

单相PWM整流器搭建训练——(一)拓扑原理介绍

单相整流器是一种将交流电转换为直流电的设备,主要由变压器、整流元件和滤波电路组成。变压器将输入的交流电压转换为适合整流的较低电压,整流元件(如二极管)利用其单向导电性将交流电转换为脉动直流电,最后滤波电路去除脉动直流电中的纹波,输出较为平滑的直流电,从而实现交流到直流的转换,广泛应用于各类电源设备中。

DikouNass的博客 1587

Vue非父子组件通讯

1 . 新建一个事件中心的js,方便在每个地方使用。 //Bus.js文件 import Vue from 'vue'; export default new Vue(); 2 . 使用方法 //A.vue文件 import Bus from 'Bus文件所在的目录/Bus' methods:{ sent:(){ //在此处提交给另一个组件 ...

huipo22的博客 401

“基于车载车机 ADB 的安卓自动化测试”以及“类似智谱 AutoGLM 的 AI 安卓自动化项目”的整理和选型建议。

本文系统梳理了安卓自动化测试两大路线。传统ADB框架中,**Appium**适用于企业级测试,**AndroidViewClient**和**Airtest**适合脚本化与图像识别场景。AI驱动的方案里,**智谱Open-AutoGLM**擅长中文场景的视觉理解与操作,**DroidRun**支持多模型与跨平台,而**Android-MCP**则适合将安卓能力作为工具集成到现有AI平台。选型需根据稳定性、技术栈与AI集成需求决定。

weixin_39072720的博客 900

几种常见的Vue组件间的传参方式?

Vue父子组件通讯的方法其实有很多,本文只是做一个总结,说说他们的优缺点。 1.Vuex - 介绍 1. Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。 2. 它采用集中式存储管理应用的所有组件的状态, 并以相应的规则保证状态以一种可预测的方式发生变化。 Vuex 也集成到 Vue 的官方调试工具 devtools extension, 提供了诸如零配置的 time-tr...

moshangyanhua的博客 662

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

vue组件之间传参方式

组件之间传参方式

yu_yu_lll的博客 721

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

【Vue】组件传参、vuex状态管理

缺点:不支持响应式, $on事件不会自动清楚销毁的,需要手动来销毁,可在beforeDestroy中解绑监听,避免重复触发。缺点:无法监听数据修改的来源,不支持响应式。缺点:若组件嵌套层次多,传递数据比较麻烦。

m0_61049675的博客 726

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Vue3组件通信,以及过程中会遇到的一些问题

组件通信,决定了父子组件之间,兄弟组件之间以及跨层级组件之间传递数据和事件。下面让我们一起了解一下吧父传子父传子:父组件直接把要传递的数据写在子组件标签上,子组件通过defineProps接收父组件传递过来的数据,之后该数据即可在子组价内部使用。

qq_38176216的博客 638

vuejs 传参 向 子组件 父组件_React四种组件通信详解

组件间通信常见的几种情况一、父组件到子组件二、子组件到父组件三、跨级组件四、非嵌套组件1)父组件到子组件:通常父组件使用props向子组件传递,然后子组件处理父组件Parent.js子组件Child.js在上面的例子中,父组件Parent通过title属性向子组件Child传递值,子组件Child通过this.prop.title就可以获取到父组件Parent的传递的值 2)子组件到父组件:利用回...

weixin_36251052的博客 136

组件之间的通信方式

组件之间十二种传值方式

weixin_48816102的博客 1059

vue组件传参记录

在vue项目中,父子组件间的通讯很方便。但兄弟组件或多层嵌套组件间的通讯,就会比较麻烦。 parent / children 传参调用方法 vue中打印this可以看到,parent / children 通过这两个方法就可以实现组件传参和调用各自的方法了 eventBus这个自己安装下 通过main.js页面的全局抛出然后再 通过$emit定义传参修改 $on的方式监听变动 $off的方式销毁 provide/inject 父组件注入 子组件抛出给data 在Vue 3中,使用provi

qq_41206597的博客 993

【Vue】Vue中的父子组件通讯以及使用sync同步父子组件数据

前言: 之前写过一篇文章《在不同场景下Vue组件间的数据交流》,但现在来看,其中关于“父子组件通信”的介绍仍有诸多缺漏或者不当之处, 正好这几天学习了关于用sync修饰符做父子组件数据双向绑定的的用法, 于是决定写一篇文章, 再次总结下“Vue中的父子组件通信”。前面提示:本文文字略少,代码略多 父子组件通讯,可分为两种情况: 1. 父组件向子组件中传递数据2. 子组件向父组件中传递数据一般情...

weixin_30651273的博客 85

vue2、vue3状态管理之vuex、pinia

组件之间的传值一般有哪些?有父子组件通讯,兄弟组件通讯…但是传参对于多层嵌套就显得非常繁琐,代码维护也会非常麻烦。因此就把组件共享状态抽取出来以一个全局单例模式管理,把共享的数据函数放进状态管理中,任何组件都可以进行使用。

daishu_shu的博客 1891

vue的使用经验

导读 这一次的口号是,带你重新认识vue,拯救1,2个前端开发者。 从2018年从事前端职业以来,呆过大小公司,干这一行都有2年多。代码写的多了,就越来越体会新手程序员都是挖坑的。在工作过程中,用一种方式去实现某个功能,等过了半年,大半年,自己成长起来了,哪天需求来了,回到该功能改代码。这是我自己的代码吗?当时是不是脑袋被门夹过,才想到用这个愚蠢的方法来实现,明明github上有一堆写好...

weixin_35709751的博客 939

element-ui源码之组件通信那些事

  最近在用element-ui重构前端项目,无意之中翻阅到一个比较好用的组件间通信方式,借助于vue的封装的发布-订阅消息模式与mixin语法。在开始之前先总结下vue常用的组件间通信方式,具体如下:   1、props与自定义事件     优点:常用的父子、子父组件传递方式,简单易懂     缺点:子父、父子之间传参比较高效,但是爷孙,兄弟组件之间存在通信短板,只能一级级传递   2、...

weixin_30491641的博客 338

vuex的基本使用 (vue2、vue3)

vuex的基本使用

qq_47986892的博客 523

vue的状态管理模式 Vuex

Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式 + 库。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。

weixin_46495993的博客 872
上一篇: vue,react,js 图片上传前对图片进行压缩,主要用于头像上传(利用canvas重绘图片已达到压缩效果)
下一篇: 前端开发vscode的常用插件
Wilson_gzw
博客等级 码龄7年 0粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值