在Vue 2中,provide 和 inject 是一对选项,用于实现跨组件的依赖注入。这种机制主要用于高阶插件/组件库的开发,允许一个祖先组件向其所有子孙组件注入一个依赖,不论组件层次有多深,并在起始组件和注入组件之间建立一种松耦合关系。
provide
provide 选项允许你指定你想要提供给后代组件的数据/方法。provide 可以是一个对象或返回一个对象的函数。如果是返回一个对象的函数,那么该函数将只被调用一次,所有组件共享同一个响应式对象。
inject
inject 选项用来接收来自祖先组件中 provide 的属性。inject 可以是一个字符串数组或一个对象,其中对象的属性名是本地的绑定名,属性值是:
- 一个字符串,表示要注入的属性的名称(来自祖先的
provide)。 - 一个对象,具有
from和default属性。from指定了要注入的属性的名称,default是默认值,在找不到相应的属性时使用。