provide 和 inject

183 阅读1分钟

在Vue 2中,provideinject 是一对选项,用于实现跨组件的依赖注入。这种机制主要用于高阶插件/组件库的开发,允许一个祖先组件向其所有子孙组件注入一个依赖,不论组件层次有多深,并在起始组件和注入组件之间建立一种松耦合关系。

provide

provide 选项允许你指定你想要提供给后代组件的数据/方法。provide 可以是一个对象或返回一个对象的函数。如果是返回一个对象的函数,那么该函数将只被调用一次,所有组件共享同一个响应式对象。

inject

inject 选项用来接收来自祖先组件中 provide 的属性。inject 可以是一个字符串数组或一个对象,其中对象的属性名是本地的绑定名,属性值是:

  • 一个字符串,表示要注入的属性的名称(来自祖先的 provide)。
  • 一个对象,具有 fromdefault 属性。from 指定了要注入的属性的名称,default 是默认值,在找不到相应的属性时使用。