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屬性中。