vue 注入怎么实现
Vue 依赖注入的实现方法
Vue 依赖注入主要通过 provide 和 inject 实现,允许父组件向深层子组件传递数据或方法,避免逐层传递 props 的繁琐。
基本语法
父组件使用 provide 提供数据或方法:
export default {
provide() {
return {
sharedData: this.dataValue,
sharedMethod: this.methodName
}
}
}
子组件通过 inject 接收注入内容:

export default {
inject: ['sharedData', 'sharedMethod']
}
响应式注入
默认情况下,注入的值不是响应式的。如需响应式数据,可以通过传递一个响应式对象或计算属性实现:
provide() {
return {
reactiveData: Vue.observable({ value: this.dataValue })
}
}
使用 Symbol 避免命名冲突
大型项目中建议使用 Symbol 作为注入名:

// 在单独文件中定义 key
export const DataKey = Symbol()
// 父组件
provide() {
return {
[DataKey]: this.dataValue
}
}
// 子组件
inject: { injectedData: { from: DataKey } }
注入默认值
可以为注入值设置默认值:
inject: {
injectedData: {
from: 'optionalKey',
default: 'defaultValue'
}
}
组合式 API 实现
在 setup() 中使用 provide 和 inject:
import { provide, inject } from 'vue'
// 父组件
setup() {
const data = ref('value')
provide('key', data)
}
// 子组件
setup() {
const injectedData = inject('key', defaultValue)
}
依赖注入适用于插件开发、全局状态管理(替代部分 Vuex 场景)或深层组件通信,但过度使用可能导致组件间耦合性增加,需谨慎设计。






