provide属性和inject属性是需要进行搭配使用的,用于跨越父子组件的数据祖先组件向后代组件传输数据。这里我们将对provide属性的初始化进行讲解。
export function initProvide (vm: Component) {
const provide = vm.$options.provide
if (provide) {
vm._provided = typeof provide === 'function'
? provide.call(vm)
: provide
}
}
从程序的源代码看provide的初始化过程还是比较简单的,首先看组件中的$options属性中是否具有provide属性如果没有就不进行处理。如果有根据provide的值类型是否是函数,如果是函数则进行调用如果不是函数就直接进行赋值。并设置到组件对象的_provided属性中。