欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

聊聊 Vue 中 provide/inject 的应用

程序员文章站 2022-11-07 21:17:15
众所周知,在组件式开发中,最大的痛点就在于组件之间的通信。在 Vue 中,Vue 提供了各种各样的组件通信方式,从基础的 props/$emit 到用于兄弟组件通信的 EventBus,再到用于全局数据管理的 Vuex。 在这么多的组件通信方式中,provide/inject 显得十分阿卡林(毫无存 ......

众所周知,在组件式开发中,最大的痛点就在于组件之间的通信。在 vue 中,vue 提供了各种各样的组件通信方式,从基础的 props/$emit 到用于兄弟组件通信的 eventbus,再到用于全局数据管理的 vuex。

在这么多的组件通信方式中,provide/inject 显得十分阿卡林(毫无存在感)。但是,其实 provide/inject 也有它们的用武之地。今天,我们就来聊聊 vue 中 provide/inject 的应用。

何为 provide/inject

provide/inject 是 vue 在 2.2.0 版本新增的 api,官网介绍如下:

这对选项需要一起使用,以允许一个祖先组件向其所有子孙后代注入一个依赖,不论组件层次有多深,并在起上下游关系成立的时间里始终生效。如果你熟悉 react,这与 react 的上下文特性很相似。

官网的解释很让人疑惑,那我翻译下这几句话:

provide 可以在祖先组件中指定我们想要提供给后代组件的数据或方法,而在任何后代组件中,我们都可以使用 inject 来接收 provide 提供的数据或方法。

举个官网的