【发布时间】:2021-06-21 10:55:28
【问题描述】:
我得到了这个组件:
<template>
<Popover v-slot="{ open }">
<PopoverButton>
{{ title }}
</PopoverButton>
<div v-if="computedOpen">
<PopoverPanel static>
<slot name="popover"></slot>
</PopoverPanel>
</div>
</Popover>
</template>
<script>
import {Popover, PopoverButton, PopoverPanel} from '@headlessui/vue'
import {computed, ref, watch} from 'vue'
import {useRoute} from 'vue-router'
export default {
name: 'DropdownMenuButton',
mixins: [slots],
props: {
name: {
type: String,
},
title: {
type: String,
default: ''
},
},
components: {
Popover,
PopoverButton,
PopoverPanel,
ChevronDownIcon,
},
setup(props) {
const isOpen = ref(null);
const route = useRoute()
watch(route, () => {
isOpen.value = false;
});
const computedOpen = computed(() => {
let open = ...? //this is missing...
return isOpen.value && open.value;
});
return {
computedOpen
}
},
}
</script>
该组件使用headless UI's popover。
现在我想在路线更改后关闭弹出框。虽然检测到路由更改正常,但我无法访问setup() 方法中的<Popover> 的open 值以确定computedOpen 是否应该返回true 或false。
我的问题:如何在计算值中访问v-slot="{ open }?
【问题讨论】:
标签: javascript vue.js vuejs3