面试了许多求职者,很多求职者只知其然,而不知所以然,写此文章为广大前端小伙伴指引迷津。纯干货!纯干货!纯干货!
目录
组件通信
组件通信类别?
父子通信
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 路由传参
缺点: 仅跳转。