vue组件之间通信,我们可以使用props || emit和vuex两种方式,但是vuex太重,props在多级组件中使用又太麻烦,子子子子子 这种多层组件向上触发事件很容易出BUG
so v-on="$listeners" 可以解决每层都要emit事件和参数!
eg:
<top>
<parent>
<center>
<bottom>
</bottom>
</center>
</parent>
</top>
bottom
<div @click="changeEmit">
</div>
changeEmit(){
this.$emit('changeName',123456)
}
center
<bottom v-on="$listeners">
</bottom>
parent
<center v-on="$listeners"> </center>
top
<parent @changeName='changeName'></parent>
changeName(e){
// e : 123456
}
如果top组件要和bottom组件进行通信,下面有三种方式可以实现
v-on=“
l
i
s
t
e
n
e
r
s
"
在
最
里
层
组
件
和
最
外
层
组
件
不
用
写
最
里
层
写
触
发
的
事
件
e
m
i
t
和
参
数
,
中
加
两
层
组
件
加
上
v
−
o
n
=
"
listeners" 在最里层组件和最外层组件不用写 最里层写 触发的事件emit 和参数, 中加两层组件 加上v-on="
listeners"在最里层组件和最外层组件不用写最里层写触发的事件emit和参数,中加两层组件加上v−on="listeners” 不用再接收和触发事件,
最外层 直接接收 触发的事件和参数就可以。