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