场景:兄弟组件传值,点击A组件下方pushB组件路由,第一次点击时不能传参
由于
o
n
在
on 在
on在emit后面执行,所以在emit执行时 没有on来接受参数,导致第一次触发时不能执行
解决方式: 先加载B组件,将emit写成异步执行方法
this.$router.push('/cmDetails')
setTimeout(() => {
Bus.$emit('setCmDetails',{name,price,img,introduction})
}, 20);
B组件created周期里接收。
// 6.19更新
在有组件缓存的组件使用emit传递值时,出导致多次传值的bug
解决:
deactivated()生命周期中调用$off
setTimeout是为了让此方法异步,不然会导致参数还成为传递出去方法就被关闭
deactivated() {
setTimeout(() => {
Bus.$off("submitOrder");
}, 2000);
},