您现在的位置是:首页 >技术交流 >vue组件通信的方式网站首页技术交流

vue组件通信的方式

入坑前端的N天 2024-06-26 14:23:21
简介vue组件通信的方式

(1) props / e m i t 父组件通过 p r o p s 向子组件传递数据,子组件通过 emit 父组件通过props向子组件传递数据,子组件通过 emit父组件通过props向子组件传递数据,子组件通过emit和父组件通信
(2)eventBus事件总线($emit / $on)
eventBus事件总线适用于父子组件、非父子组件等之间的通信
(3)依赖注入(provide / inject)
这种方式就是Vue中的依赖注入,该方法用于父子组件之间的通信。当然这里所说的父子不一定是真正的父子,也可以是祖孙组件,在层数很深的情况下,可以使用这种方法来进行传值。就不用一层一层的传递了。
(3)ref / r e f s 这种方式也是实现父子组件之间的通信。( 4 ) refs 这种方式也是实现父子组件之间的通信。 (4) refs这种方式也是实现父子组件之间的通信。(4parent / c h i l d r e n 使用 children 使用 children使用parent可以让组件访问父组件的实例(访问的是上一级父组件的属性和方法)
使用 c h i l d r e n 可以让组件访问子组件的实例,但是, children可以让组件访问子组件的实例,但是, children可以让组件访问子组件的实例,但是,children并不能保证顺序,并且访问的数据也不是响应式的。
(5)$attrs / l i s t e n e r s 使用场景, A 是 B 组件的父组件, B 是 C 组件的父组件。想要组件 A 给组件 C 传递数据,这种隔代的数据,该使用哪种方式?如果是用 p r o p s / listeners 使用场景,A是B组件的父组件,B是C组件的父组件。想要组件A给组件C传递数据,这种隔代的数据,该使用哪种方式? 如果是用props/ listeners使用场景,AB组件的父组件,BC组件的父组件。想要组件A给组件C传递数据,这种隔代的数据,该使用哪种方式?如果是用props/emit来一级一级的传递,确实可以完成,但是比较复杂;如果使用事件总线,在多人开发或者项目较大的时候,维护起来很麻烦;如果使用Vuex,的确也可以,但是如果仅仅是传递数据,那可能就有点浪费了。
针对上述情况,Vue引入了$attrs / $listeners,实现组件之间的跨代通信。

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。