Vue.js Vue js v3组件不再具有访问$children的权限。我们怎样才能得到一个组件?
使用Vue 2,我们可以使用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"
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
。这将为您提供两个选项卡组件的数组