# vue如何获取跨层级组件实例?

# 前言


通常我们可以通过下面方式轻易获取父子组件的实例:


  • this.$parent 获取父组件实例
  • this.$children 获取直接子组件实例


如果想要跨层级获取组件的话,有一种曲折的方式,就是使用refref方式只能获取当前组件上下文组件):


  • this.$parent.$parent.$refs.xxx 跨级访问父组件
  • this.$children.$children.$refs.xxx 跨级访问子组件


这种方式太过复杂,毫无健壮性可言,下面介绍异种优雅的方式获取跨层级组件的实例。


# 思路


使用到的技术的基础是provide和inject高级特效。


具体思路就是:父组件通过类似getxxxref方法的方式获取孙组件实例。孙组件也可以通过setxxxref方法实时通知父组件自己的状态。


注意:一般开发通用组件库的时候才会使用,业务中理想状态下不应该出现这种访问实例的情况,大概率使用vuex就可以了。


# 示例


哎呀,准备做实验发现没搞懂,后续补充。。。


视频地址:https://time.geekbang.org/course/detail/163-86626