我有一个组件(Group
),它可以有递归组件。在这个组件中还有另一个组件(ButtonsContainer
). ButtonsContainer
组件公开了聚焦第一个和最后一个按钮的函数。我想要的是获得第一个组和最后一个组的引用,包括递归的。我怎么能实现这一点呢?我尝试了一个递归函数,但超过了最大调用堆栈大小。
下面是Group
组件。我省略了ButtonsContainer
组件,因为它没有特殊的功能,只是在网格中显示按钮。Component Group
:
<script setup lang="ts">
const props = defineProps<{
group: Group
}>();
const buttonsContainerRef = ref<InstanceType<typeof ButtonsContainer> | null>(null);
const firstGroupRef = ref<InstanceType<typeof Group> | null>(null);
const lastNestedGroupRef = ref<InstanceType<typeof Group> | null>(null);
function getLastButtonsContainerRef(): Ref<InstanceType<typeof ButtonsContainer> | null> | undefined {
if (props.group.groups.length > 0) {
// return getLastButtonsContainerRef(); // still does not work:(
getLastButtonsContainerRef();
} else {
return buttonsContainerRef;
}
}
</script>
<template>
<ul>
<li v-if="group.buttons.length > 0 && !props.group.collapsed">
<ButtonsContainer
:buttons="group.buttons"
ref="buttonsContainerRef"
/>
</li>
<li
v-if="group.groups.length > 0 && !props.group.collapsed"
v-for="nestedGroup in group.groups"
:key="nestedGroup.uuid"
>
<Group
:group="nestedGroup"
class="nested-group"
/>
</li>
</ul>
</template>
如何获取第一组和最后一组(包括嵌套组)的引用?欢迎提供帮助。谢谢!
1条答案
按热度按时间gudnpqoy1#
要获取嵌套的
refs
,您需要自己遍历树。没有现成的解决方案。
下面是一个非常基本的
refs
示例,其中包含所有嵌套的子元素。