<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
-
is not working?
Beta Was this translation helpful? Give feedback.
All reactions