本篇文章参考Vue官网学习, 加上自己的理解。
版本: Vue@3
关于provide&&inject:
- 在一般的情况下, 父组件向子组件通信我们一般采用
props
属性进行组件之间的通信, 但是如果在组件嵌套很深的情况下, 这个办法虽然可以, 但是却有点繁琐, 相比如果使用vuex
的话, 我们还需要安装这个插件, 所以Vue
提供了一组方法provide&&inject
, 父组件中提供一个属性,provide
, 子组件中使用一个属性进行值的接受inject
, 这样不管组件之间层级嵌套有多深, 都可以实现组件之间的通信。
比如,通信中遇到这种情况:
- 来自官网的图:
在这里,我们需要进行组件1 和 组件5 的通信,那么这里就可以使用这一对属性了,
使用方法:
父组件
- js部分:
const app = Vue.createApp({
data() {
return {
todos: ['Feed a cat']
}
},
components: {
cpn, // 将子组件进行注册
},
provide() {
return {
todos: this.todos,
}
}
})
app.mount('#app') // 挂载 app
- html 部分