【发布时间】:2021-11-02 00:22:39
【问题描述】:
Vue 和 Vite 的新手,但试图让动态布局在这里正常工作。我相信我有需要的东西,但元数据似乎总是以空对象或undefined 的形式出现。
AppLayout.vue
<script setup lang="ts">
import AppLayoutDefault from './stub/AppLayoutDefault.vue'
import { markRaw, watch } from 'vue'
import { useRoute } from 'vue-router'
const layout = markRaw(AppLayoutDefault)
const route = useRoute()
console.log('Current path: ', route.path)
console.log('Route meta:', route.meta)
watch(
() => route.meta,
async (meta) => {
try {
const component = await import(`./stub/${meta.layout}.vue`)
layout.value = component?.default || AppLayoutDefault
} catch (e) {
layout.value = AppLayoutDefault
}
},
{ immediate: true }
)
</script>
<template>
<component :is="layout"> <router-view /> </component>
</template>
App.vue
<script setup lang="ts">
import AppLayout from '@/layouts/AppLayout.vue'
</script>
<template>
<AppLayout>
<router-view />
</AppLayout>
</template>
每条路由都有相应的元集,其中包含一个名为 layout 的属性。
我似乎无法在第一次加载或任何点击导航栏中的链接(这只是路由器链接)时正确应用布局。
【问题讨论】:
标签: vue.js vue-router vuejs3 vite