Vue2系列-组件通信

84 阅读1分钟

面试了许多求职者,很多求职者只知其然,而不知所以然,写此文章为广大前端小伙伴指引迷津。纯干货!纯干货!纯干货!

目录

组件通信

组件通信类别?

答:主要分三类父子通信隔代通信跨级通信;

父子通信

props / $emit、$parent / $children、ref

// 1 props/$emit
父组件向子组件传值: props;
子组件向父组件传值: $emit;

// 2 $parent/$children
通过$parent和$children就可以访问组件的实例。
($parent和$children的值不一样,$children 的值是数组,而`$parent`是个对象)

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

$attrs / $listeners、provide / inject

// 1 $attrs/$listeners

// 2 provide/inject
父组件中通过`provide`来提供变量, 然后再子组件中通过`inject`来注入变量。
缺点:provide 和 inject 绑定并不是可响应的。
跨级通信

eventBus、Vuex、localStorage / sessionStorage、路由传参。

// 1 eventBus
所有组件共用相同的事件中心,可以向该中心注册发送事件或接收事件。
缺点:当项目较大,难以维护。

// 2 Vuex
集中式存储管理应用的所有组件的状态。

// 3 localStorage / sessionStorage
localStorage: 生命周期是永久。
sessionStorage: 生命周期为当前窗口或标签页。
缺点:数据和状态比较混乱,难以维护。

// 4 路由传参
缺点: 仅跳转。

小白也是新手面试官,欢迎领导莅临指导工作,提出建议,小白不胜感激,不喜勿喷,点赞收藏随机送程序媛小姐姐一枚哦!!!