vue组件之间8种组件通信方式总结

props和$emit ①父组件向子组件传递数据是通过prop传递的, ②子组件传递数据给父组件是通过$emit触发事件来做到的

$attrs和$listeners (Vue 2.4开始提供) ① 如果父组件A下面有子组件B,组件B下面有组件C,这时如果组件A想传递数据给组件C怎么办呢? ② 能够让组件A之间传递消息给组件C

中央事件总线 eventBus ① 如果两个组件不是父子关系呢?这种情况下可以使用中央事件总线的方式; ② 新建一个Vue事件bus对象,然后通过bus.$emit触发事件,bus.$on监听触发的事件

provide和inject ① 父组件中通过provider来提供变量,然后在子组件中通过inject来注入变量。不论子组件有多深,只要调用了inject那么就可以注入provider中的数据。而不是局限于只能从当前父组件的prop属性来获取数据,只要在父组件的生命周期内,子组件都可以调用

$parent和$children

ref / refs ① ref:如果在普通的 DOM 元素上使用,引用指向的就是 DOM 元素;如果用在子组件上,引用就指向组件实例,可以通过实例直接调用组件的方法或访问数据

vuex处理组件之间的数据交互

总结 ① 父子组件通信: props; $parent / $children; provide / inject ; ref ;$attrs /$listeners ② 兄弟组件通信: eventBus ; vuex ③ 跨级通信:eventBus;Vuex;provide / inject 、$attrs / $listeners

经验分享 程序员 微信小程序 职场和发展