跨层级传数据的神器
祖先组件向任意后代组件传数据,避免 props 层层传递。
祖先组件提供数据:
后代组件接收:
建议:同时 provide 一个 update 方法,让后代调用来修改数据。
组件实例维护 provides 对象。子组件的 provides 继承自父组件(Object.create(parent.provides))。
inject 时顺着原型链向上查找。
适合场景:开发 UI 组件库时(如 Form 传递规则给 FormItem),不能用 Pinia。
| Props | Provide/Inject | Pinia | |
|---|---|---|---|
| 范围 | 父子 | 跨层级 | 全局 |
| 复杂度 | 低 | 中 | 高 |
| 场景 | 简单传值 | 组件库 | 复杂状态 |