今天发现了一对好玩的组件传值方式:provide和inject。
我平常用的最多是组件传值方式是父子组件props、$emit这些,今天看到一个封装插件里存在一种使用provide和inject进行组件传值的方式。这种方式比较适合嵌套较多的高级组件传值使用。
父组件中设置provide以对象的形式扔出数据
子组件设置inject注入对应的属性
看了网上一些大佬的文章,总结起来就是将自己组件的数据在provide中定义,然后provide会其将抛出来,哪个组件想要获取这个数据,就设置inject将对应的字段注入到自身的组件里。注意:这里定义provide的组件与inject接收数据的组件需要是父子,或者爷孙关系 =》 provide的组件 含(子组件 含(inject的组件))
props那种传值方式对组件之间的关系以及属性的设置会相对具有针对性,provide的方式相当于把数据做成公共的,倒是很类似vuex。