vue中递归调用自身的组件如何向父组件传值

目前写了一个递归的树形目录,通过调用自己的name的方式来循环的调用自身,但是问题来了,这个是一个子组件,这样循环调用后,无法向它的父组件传值了,这种该怎么办呢(就第一层可以传,后面的子层都不行,因为它后面的子层父组件就是自己本身)

clipboard.png

阅读 6.7k
2 个回答

可以递归找它的根组件。
比如,根组件data里声明一个属性,isTreeRoot = true

子组件的created里向上找有这个属性的Vue组件:

data () {
  return {
    tree: null,
  }

}
created () {
  let parent = this.$parent
  while (parent && !parent.isTreeRoot) {
    parent = parent.$parent
  }
  this.tree = parent
}

tree属性即为树的根组件。

v-on + $emit()组合在递归组件里是可以用的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题