vue中的provide和inject
浅析
provide
和inject
主要为高阶插件/组件库提供用例。并不推荐直接用于应用程序代码中。
定义说明:这对选项是一起使用的。以允许一个祖先组件向其所有子孙后代注入一个依赖,不论组件层次有多深,并在起上下游关系成立的时间里始终生效。
通俗的说就是:组件得引入层次过多,我们的子孙组件想要获取祖先组件得资源,那么怎么办呢,总不能一直取父级往上吧,而且这样代码结构容易混乱。这个就是这对选项要干的事情。
provide:是一个对象,或者是一个返回对象的函数。里面呢就包含要给子孙后代的东西,也就是属性和属性值。
inject:一个字符串数组,或者是一个对象。属性值可以是一个对象,包含from和default默认值。
const Child = { inject: {
foo: {
from: 'bar',
default: 'foo'
}
}
}
from表示在可用的注入内容中搜索用的 key,default当然就是默认值。
案例
理论过于苍白,我们用element-ui里面的例子来说明一下。
在element-ui中,我们经常使用里面的表单,看一段熟悉的代码:
这是vue页面中的结构。el-form > el-form-item > el-input
我们打开el-form这个组件,有这么一段代码:
这里就是我们说的provide,向下提供信息,这里提供的是当前的vue实例,相当于给了后代一个接口。这样在任何的后代组件中,都可以使用inject选项来接收指定的我们想要添加在这个实例上的属性。
接着我们看看后代组件的做法,在el-form-item中:
这样也就可以访问了,当做当前vue实例的属性。这样做的好处,相当于给了一个捷径,不用使用$parent一级一级的访问。
我们可以把依赖注入看做一部分“大范围有效的prop”,除了
参考资料
https://cn.vuejs.org/v2/api/#provide-inject
https://cn.vuejs.org/v2/guide/components-edge-cases.html#%E4%BE%9D%E8%B5%96%E6%B3%A8%E5%85%A5
以上是 vue中的provide和inject 的全部内容, 来源链接: utcz.com/z/377565.html