概述
provide/inject
:简单的来说就是在父组件中通过provide
来提供变量,然后在子组件中通过inject
来注入变量。
需要注意的是这里不论子组件有多深,只要调用了inject
那么就可以注入provide
中的数据。而不是局限于只能从当前父组件的prop
属性来获取数据。
写法
provide:选项应该是一个对象或返回一个对象的函数。该对象包含可注入其子孙的属性
// 传入对象写法
provide: {
foo: 'bar'
}
// 函数写法
provide () {
return {
foo: 'bar'
}
}
inject :一个字符串数组,或 一个对象,对象的 key 是本地的绑定名
// 父级组件提供 'foo'
var Provider = {
provide: {
foo: 'bar'
},
// ...
}
// 子组件注入 'foo'
var Child = {
inject: ['foo'],
created () {
console.log(this.foo) // => "bar"
}
// ...
}
实现 provide / inject 可监听
提示:provide 和 inject 绑定并不是可响应的。这是刻意为之的。然而,如果你传入了一