Provide 以及 Inject 是 Vue 中用於祖先元素向其全部後臺元素注入依賴的接口。javascript
// Data.vue ... export default { provide: { setData: 'setData' }, methods: { setdata() { //Something } } };
// DataItem.vue ... export default { inject: ['setData'], created() { this.setdata(); } };
<template> <data> <data-item></data-item> </data> </template>
在項目中,如須要兩個基礎組件的父子組件進行通訊,又不想寫太多業務無關代碼,就能夠使用 Provide 以及 Inject。html
例如:vue
<app> <app-header></app-header> <!-- 在App中開啓header的顯示 --> <app-navigation></app-navigation> <!-- 在App中開啓navigation的顯示 --> ... <app-footer></app-footer><!-- 在App中開啓footer的顯示 --> </app>
僅須要簡單的調用組件,而不須要傳遞 Prop 的值以及定義 Slot。java
固然也能夠使用一個全局對象實現,使用 Provide 以及 Inject 好處是可多頁面複用以及較爲簡單。app
若是需求比較複雜,仍是使用一個全局的 Vue 對象或 Vuex 更好。ide