该方法可以用于祖孙组件之间的通信,组件间层级很深的话,可以使用这种方式来进行传值。就不用一层一层的传递了;
provide/inject是vue提供的两个钩子,和data、methods是同级的。并且provide的书写形式和data是一样的。
- provide钩子用来发送数据或方法;
- inject钩子用来接收数据和方法;
在父组件中:
在子组件中:
还可以这样写,这样就可以访问父组件中所有的属性:
data() {
return {
user: {
name: "哈利波特",
},
};
},
provide() {
return {
app: this,
};
},
inject:['app'],
console.log(this.app.user)
注意:依赖注入所提供的属性是非响应式的;