您现在的位置是:首页 >技术交流 >vue组件通信的方式网站首页技术交流
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这种方式也是实现父子组件之间的通信。(4)parent /
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使用场景,A是B组件的父组件,B是C组件的父组件。想要组件A给组件C传递数据,这种隔代的数据,该使用哪种方式?如果是用props/emit来一级一级的传递,确实可以完成,但是比较复杂;如果使用事件总线,在多人开发或者项目较大的时候,维护起来很麻烦;如果使用Vuex,的确也可以,但是如果仅仅是传递数据,那可能就有点浪费了。
针对上述情况,Vue引入了$attrs / $listeners,实现组件之间的跨代通信。