详解vue组件通信的三种方式
发布时间 - 2026-01-11 02:07:42 点击率:次1. 第一种方式就是官方推荐的

官方推荐方式
有时候两个组件也需要通信(非父子关系)。在简单的场景下,可以使用一个空的 Vue 实例作为中央事件总线。
本质是通过派发事件然后监听事件从而更改值,(父子组件通信也可用这个方式,但是不同的一点就是父子组件通信的时候可以不用一个空的Vue实例来做中转,这种方式我这里就不做演示的了,因为我的题目是非父子通信)
空的Vue实例 bus
import Vue from 'vue' const bus = new Vue() export default bus
组件add
<!--html结构-->
<template>
<div>
<p>我是add组件的num:{{num}} </p>
<button @click='add'>增加</button>
</div>
</template>
// js
<script>
import bus from '../bus.js'
export default {
data() {
return {
num: ''
}
},
methods: {
add() {
if (this.num) {
this.num++
bus.$emit('num-change', this.num)
} else {
this.num = 1
bus.$emit('num-change', this.num)
}
}
}
}
</script>
组件sub
<!--html结构-->
<template>
<div>
<p>我是sub组件的num:{{num}}</p>
</div>
</template>
// js
<script>
import bus from '../bus.js'
export default {
data() {
return {
num: ''
}
},
created() {
bus.$on('num-change', num => {
this.num = num
})
}
}
</script>
2.通过vuex来进行状态管理
官方状态管理
vuex我这里就不详细说了,网上教程太多。
3.取巧利用js中的对象的特性(指针)
Object在内存中存储只是保留指针,所以父组件通过props来给兄弟组件传递同一个对象,兄弟组件接收的对象跟父组件的对象都是指向同一个内存地址,故不管在哪里修改都能保持一致。
上代码,父组件把同一个对象传递给add组件和sub组件,那么add组件和sub组件接收到的对象也是指向父组件app的对象都是指向同一个内存地址。add组件对传入的对象进行+1的操作,sub组件进行-1的操作。
父组件 app.vue
<!--html结构-->
<template>
<div id="app">
<h1>我是app父组件的newNum:{{share.newNum}}</h1>
<hr>
<!--将同一个对象同时传给两个子组件-->
<addnum :share1='share'></addnum>
<hr>
<subnum :share2='share'></subnum>
</div>
</template>
// js
import addnum from './components/add'
import subnum from './components/sub'
export default {
data() {
return {
share: {
newNum: 1
}
}
},
components: {
addnum, subnum
}
}
子组件add.vue
<!--html结构-->
<template>
<div>
<p>我是add组件的newNum:{{share1.newNum}} </p>
<button @click='add'>增加</button>
</div>
</template>
//js
<script>
export default {
methods: {
add() {
this.share1.newNum++
}
},
props: {
share1: {
type: Object,
}
}
}
</script>
子组件sub.vue
<!--html结构-->
<template>
<div>
<p>我是sub组件的newNum:{{share2.newNum}}</p>
<button @click='numSub'>减少</button>
</div>
</template>
// js
<script>
export default {
methods: {
numSub() {
this.share2.newNum--
}
},
props: {
share2: {
type: Object,
}
}
}
</script>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# vue组件通信
# vue组件间通信
# vue组件之间的通信
# Vue.js每天必学之组件与组件间的通信
# Vuejs第十篇之vuejs父子组件通信
# vue中组件通信的八种方式(值得收藏!)
# vue 组件间的通信之子组件向父组件传值的方式
# Vue 之孙组件向爷组件通信的实现
# 详解vue跨组件通信的几种方法
# 深入探讨Vue.js组件和组件通信
# Vue3的7种种组件通信详情
# 详细聊聊vue组件是如何实现组件通讯的
# 我是
# 都是
# 太多
# 就不
# 说了
# 都能
# 不做
# 可以使用
# 来做
# 第一种
# 大家多多
# 来给
# 网上
# export
# num
# button
# html
# default
# lt
# gt
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Windows10如何更改计算机工作组_Win10系统属性修改Workgroup
Laravel怎么进行数据库回滚_Laravel Migration数据库版本控制与回滚操作
如何在万网自助建站平台快速创建网站?
网站制作企业,网站的banner和导航栏是指什么?
HTML5空格在Angular项目里怎么处理_Angular中空格的渲染问题【详解】
Python并发异常传播_错误处理解析【教程】
Laravel怎么做数据加密_Laravel内置Crypt门面的加密与解密功能
Laravel如何安装使用Debugbar工具栏_Laravel性能调试与SQL监控插件【步骤】
创业网站制作流程,创业网站可靠吗?
edge浏览器无法安装扩展 edge浏览器插件安装失败【解决方法】
打开php文件提示内存不足_怎么调整php内存限制【解决方案】
如何使用 jQuery 正确渲染 Instagram 风格的标签列表
如何用PHP快速搭建高效网站?分步指南
如何在景安云服务器上绑定域名并配置虚拟主机?
如何快速打造个性化非模板自助建站?
Laravel如何创建自定义Artisan命令?(代码示例)
Laravel怎么创建控制器Controller_Laravel路由绑定与控制器逻辑编写【指南】
laravel怎么通过契约(Contracts)编程_laravel契约(Contracts)编程方法
如何生成腾讯云建站专用兑换码?
清除minerd进程的简单方法
Laravel如何与Vue.js集成_Laravel + Vue前后端分离项目搭建指南
长沙做网站要多少钱,长沙国安网络怎么样?
Laravel如何集成微信支付SDK_Laravel使用yansongda-pay实现扫码支付【实战】
Laravel如何生成PDF或Excel文件_Laravel文档导出工具与使用教程
Laravel如何发送邮件_Laravel Mailables构建与发送邮件的简明教程
如何用虚拟主机快速搭建网站?详细步骤解析
JS中页面与页面之间超链接跳转中文乱码问题的解决办法
如何在IIS中新建站点并配置端口与物理路径?
JavaScript实现Fly Bird小游戏
JavaScript如何实现路由_前端路由原理是什么
如何选择PHP开源工具快速搭建网站?
Windows10电脑怎么设置虚拟光驱_Win10右键装载ISO镜像文件
夸克浏览器网页跳转延迟怎么办 夸克浏览器跳转优化
Laravel怎么发送邮件_Laravel Mail类SMTP配置教程
lovemo网页版地址 lovemo官网手机登录
Laravel怎么使用Markdown渲染文档_Laravel将Markdown内容转HTML页面展示【实战】
独立制作一个网站多少钱,建立网站需要花多少钱?
网页设计与网站制作内容,怎样注册网站?
Win11任务栏卡死怎么办 Windows11任务栏无反应解决方法【教程】
Win11怎么更改系统语言为中文_Windows11安装语言包并设为显示语言
如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?
如何快速搭建FTP站点实现文件共享?
Laravel怎么判断请求类型_Laravel Request isMethod用法
bootstrap日历插件datetimepicker使用方法
Laravel怎么处理异常_Laravel自定义异常处理与错误页面教程
javascript日期怎么处理_如何格式化输出
如何在万网自助建站中设置域名及备案?
标题:Vue + Vuex + JWT 身份认证的正确实践与常见误区解析
Laravel怎么实现软删除SoftDeletes_Laravel模型回收站功能与数据恢复【步骤】
Laravel Vite是做什么的_Laravel前端资源打包工具Vite配置与使用

