vue组件间通信

Vue组件之间通信方式有哪些

一、父子组件通讯

1、props,emit

父组件可以通过props给子组件传递变量。子组件可以通过emit派发自定义事件,使父组件可以获得事件函数传递过来的形参。

2、parent、children、ref

父组件可以通过 c h i l d r e n 获取子组件,从而获取子组件的属性和方法。 v u e 3 已不支持 children获取子组件,从而获取子组件的属性和方法。vue3已不支持 children获取子组件,从而获取子组件的属性和方法。vue3已不支持children,但是父组件还可以通过 r e f s 来获取子组件实例来获取子组件的属性和方法。而子组件也可以通过 refs来获取子组件实例来获取子组件的属性和方法。而子组件也可以通过 refs来获取子组件实例来获取子组件的属性和方法。而子组件也可以通过parent来获取父组件的属性和方法。

二、兄弟组件通讯

1、parent、root

通过父组件桥接传值通讯。

2、eventbus

vue2可以通过构造一个vue实例对象,通过调用vue.emit派发事件,on监听事件来实现兄弟组件的通讯,off解除事件绑定。但是在vue3中废弃了on方法,推荐使用第三方库mitt

3、vuex

三、跨层级组件通讯

1、provide、inject

这对选项需要一起使用,以允许一个祖先组件向其所有子孙后代注入一个依赖,不论组件层次有多深,并在其上下游关系成立的时间里始终生效。如果你熟悉 React,这与 React 的上下文特性很相似。

provide

  • 一个对象或返回一个对象的函数。该对象包含可注入其子孙的属性。在该对象中你可以使用 ES2015 Symbols 作为 key,但是只在原生支持 Symbol 和 Reflect.ownKeys 的环境下可工作。

inject

  • 一个字符串数组
  • 一个对象

2、$attrs

包含了父作用域中不作为 prop 被识别 (且获取) 的 attribute 绑定 (classstyle 除外)。当一个组件没有声明任何 prop 时,这里会包含所有父作用域的绑定 (classstyle 除外),并且可以通过 v-bind="$attrs" 传入内部组件------在创建高级别的组件时非常有用。

3、eventbus

4、vuex

四、另外

1、slot

2、mixin

相关推荐
lichenyang4538 小时前
鸿蒙聊天 Demo 练习 05:新增登录功能,实现登录态保存与页面访问控制
前端
还有多久拿退休金8 小时前
我用 Three.js 造了个 3D 漫步世界,角色走路像喝醉了——以及我是怎么修好的
前端·vue.js
SZLSDH8 小时前
场景适配论 | 数字孪生IOC建设中渲染技术与智能体能力的协同逻辑
前端·数据库·ai·数字孪生·数据可视化·智能体
LJA648448 小时前
为什么 AI 时代更需要配置化组件库
vue.js
_按键伤人_9 小时前
二、从零搭建本地 RAG 知识库
前端·llm·ai编程
_按键伤人_9 小时前
一、理解 RAG:从概念到实践
前端·llm·ai编程
lichenyang4539 小时前
鸿蒙聊天 Demo 练习 04:聊天历史本地缓存,实现消息记录持久化
前端
名字都不重要何况昵称9 小时前
canvas 元素拾取
前端·canvas
从文处安9 小时前
「前端何去何从」React Router:让单页应用有多页的体验
前端·react.js
Lkstar9 小时前
Vue Router 进阶:导航守卫、动态路由与懒加载,源码级理解
前端