Vue组件通信
1.父元素给子元素传值:使用自定义属性,子组件使用props接收
2.子元素给父元素传值使用$emit,父元素使用自定义函数接收
3.provide和inject
4.事件总线eventBus
5.$dispatch和$boardcast
//向上传值
Vue.prototype.$dispatch = function(eventName,data){
let parent = this.$parent;
while(parent){
parent.$emit(eventName,data);
parent = parent.$parent
}
}
//向下传值
Vue.prototype.$boardcast = function(eventName,data){
boardcast.call(this,eventName,data)
}
function boardcast(eventName,data){
this.$children.forEach(child => {
child.$emit(eventName,data)
if(child.$children.length){
boardcast.call(child,eventName,data)
}
})
}
//$dispatch使用的时候在子孙组件里点击事件触发this.$dispatch('dispatch','孙子组件向上传递')
//祖先元素用this.$on('dispatch',(data) => {this.msg = data;})接收值,boardcast同理
6.vuex