# vue如何获取跨层级组件实例?
# 前言
通常我们可以通过下面方式轻易获取父子组件的实例:
this.$parent
获取父组件实例
this.$children
获取直接子组件实例
如果想要跨层级获取组件的话,有一种曲折的方式,就是使用ref
(ref方式只能获取当前组件上下文组件):
this.$parent.$parent.$refs.xxx
跨级访问父组件
this.$children.$children.$refs.xxx
跨级访问子组件
这种方式太过复杂,毫无健壮性可言,下面介绍异种优雅的方式获取跨层级组件的实例。
# 思路
使用到的技术的基础是provide和inject高级特效。
具体思路就是:父组件通过类似getxxxref方法
的方式获取孙组件实例。孙组件也可以通过setxxxref方法
实时通知父组件自己的状态。
注意:一般开发通用组件库的时候才会使用,业务中理想状态下不应该出现这种访问实例的情况,大概率使用vuex就可以了。
# 示例
哎呀,准备做实验发现没搞懂,后续补充。。。