Vue.js Vue js v3组件不再具有访问$children的权限。我们怎样才能得到一个组件?

Vue.js Vue js v3组件不再具有访问$children的权限。我们怎样才能得到一个组件?,vue.js,vuejs3,Vue.js,Vuejs3,使用Vue 2,我们可以使用this.$children获取组件插槽中的所有子组件。但对于Vue 3,这已经不可能了。我找不到任何替代方案或解决办法 那么,有人能帮忙吗?:) 我想要实现的是: 要使用名为TabsView的组件 我想这样使用它: <tabs-view> <tabs-title target="tab1">Title1</tabs-title> <tab-content name="tab1"

使用Vue 2,我们可以使用
this.$children
获取组件插槽中的所有子组件。但对于Vue 3,这已经不可能了。我找不到任何替代方案或解决办法

那么,有人能帮忙吗?:)

我想要实现的是:

要使用名为TabsView的组件

我想这样使用它:

<tabs-view>
  <tabs-title target="tab1">Title1</tabs-title>
  <tab-content name="tab1">...</tab-content>

  <tabs-title target="tab2">Title2</tabs-title>
  <tab-content name="tab2">...</tab-content>
<tabs-view>

标题1
...
标题2
...
我想要TabsView组件中的所有逻辑。所以这就是为什么我想把$children放在里面。因此,我可以使用子组件的值构建选项卡


因为我将使用相同的方法在不同的地方构建选项卡。我不想复制引用的逻辑。除非有一种方法可以使用refs实现这一点,而无需将相同的逻辑移动到我使用组件的每个地方,否则您可以使用
this.$el.parentElement.children
来获取DOM元素,但这不会提供组件。this:
this.$.subTree.children
将为您提供子元素,其中包括DOM元素和组件

<>但是这个功能很可能因为某种原因而被隐藏,所以如果你想考虑另一个解决方案,我会听从他的建议。 例如:

const-app=Vue.createApp({
数据(){
返回{
颜色:空
}
},
安装的(){
const children=this.$.subTree.children
log(children.map(c=>c.type))
}
})
应用程序组件('tabs-title'{
模板:“标题:”
})
应用程序组件(“选项卡内容”{
模板:“选项卡:

” }) app.mount(“#app”)

标题1
...

标题2 ...
为什么不改用refs?“你想干什么?”纪尧姆。很好的建议,我现在使用refs作为“变通方法”,但我想要实现的场景类似于tabs组件。as:12和
选项卡
组件内,我想获取给定的
选项卡
实例并控制它们。
12
然后在
选项卡
组件内访问它作为
此。$refs.myTabRef
。这将为您提供两个选项卡组件的数组