当我们遍写一个复杂的组件时,在组件内部也希望量化功能,拆解成不同的小组件构成,那在组件内部难免就需要维护公用的状态。
这就是父子组件通信,假如组件层级很深,那传递数据就会变得很麻烦而且难维护,本文将讲解Provide和Inject的使用和响应式的多种写法。
假设 组件结构为
- Q
- A
- A1
- B
基础写法
1 | Q |
响应式
官方提供的解决方案,这样做的优点是改变的方法逻辑在父级中,好维护。
1 | Q |
保留数据响应式传递
1 | Q |
向所有子组件提供响应式数据
1 | Q |
以上方式支持Q组件内状态独立管理,不会影响到另一个Q组件
假设有一个需求,需要多个Q组件之间共享数据,这就使用全局状态管理,但不想使用vuex,只想使用Provide / Inject 得如何实现呢
使用computed监听数据改动,eventBus传递事件,类似于父子组件通信
1 | 注册EventBus |
使用精简版的vuex
1 | 创建global.js注册响应式数据,做一个精简版的vuex |