在大多数遇到的vue项目中,我们的通信一般是建立在父子之间,也就是说父向子传递(props)和父取子值(引用refs)就基本可以实现。对于更复杂的数据处理可能就会选择vuex的方式,鲜少会用到provide和inject。
这次使用的契机是,在开发项目中,子项目和父项目是分开进行的,并且是不能直接作用于组件之上的。但是子项目需要对父项目的一部分内容进行操作,provide和inject就派上了用场。
在vue的官方文档中有这么一句话:
provide 和 inject 主要为高阶插件/组件库提供用例。并不推荐直接用于应用程序代码中。
provide和inject这对选项是一起使用的,以允许一个祖先组件向其所有子孙后代注入一个依赖,不论组件层次有多深,并在起上下游关系成立的时间里始终生效。
通俗的说就是:组件得引入层次过多,我们的子孙组件想要获取祖先组件得资源,那么怎么办呢,总不能一直取父级往上吧,而且这样代码结构容易混乱。这个就是这对选项要干的事情。
其中具体用法可以参考博友的文档https://segmentfault.com/a/1190000021216039