<copmonent :is='Layout' > not worked? #9409
Unanswered
djshox
asked this question in
Help/Questions
Replies: 1 comment
-
You can use like follow code: <script setup>
import { RouterLink, RouterView } from "vue-router";
import one from "./components/one.vue";
import two from "./components/two.vue";
import { computed } from "vue";
import { useRoute } from "vue-router";
const route = useRoute();
const map = {
one,
two,
};
const Layout = computed(() => map[route.meta.layout]);
</script>
<template>
<header>
<div class="wrapper">
<nav>
<RouterLink to="/">One</RouterLink>
<RouterLink to="/demo">Two</RouterLink>
</nav>
<div style="margin-bottom: 8px">
meta:
<br />
{{ route.meta }}
</div>
<div>
component:
<component :is="Layout" />
</div>
</div>
</header>
<RouterView />
</template>
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
</style>
<style scoped>
header {
line-height: 1.5;
max-height: 100vh;
}
.logo {
display: block;
margin: 0 auto 2rem;
}
nav {
width: 100%;
font-size: 12px;
text-align: center;
margin-top: 2rem;
}
nav a.router-link-exact-active {
color: var(--color-text);
}
nav a.router-link-exact-active:hover {
background-color: transparent;
}
nav a {
display: inline-block;
padding: 0 1rem;
border-left: 1px solid var(--color-border);
}
nav a:first-of-type {
border: 0;
}
@media (min-width: 1024px) {
header {
display: flex;
place-items: center;
padding-right: calc(var(--section-gap) / 2);
}
.logo {
margin: 0 2rem 0 0;
}
header .wrapper {
display: flex;
place-items: flex-start;
flex-wrap: wrap;
}
nav {
text-align: left;
margin-left: -1rem;
font-size: 1rem;
padding: 1rem 0;
margin-top: 1rem;
}
}
</style>
|
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
is not working?
Beta Was this translation helpful? Give feedback.
All reactions