<template>
<h1>Hello App!</h1>
<p>
<strong>현재 라우트 경로:</strong> {{ $route.fullPath }}
</p>
<nav>
<RouterLink to="/">홈으로 가기</RouterLink>
<RouterLink to="/about">소개로 가기</RouterLink>
</nav>
<main>
<RouterView />
</main>
</template>
RouterLink와 RouterView를 사용하는 템플릿으로 RouterView 컴포넌트는 현재 라우트 컴포넌트를 렌더링할 위치를 Vue Router에 알려주는 역할을 합니다.
import { createMemoryHistory, createRouter } from 'vue-router'
import HomeView from './HomeView.vue'
import AboutView from './AboutView.vue'
const routes = [
{ path: '/', component: HomeView },
{ path: '/about', component: AboutView },
]
const router = createRouter({
history: createMemoryHistory(),
routes,
})
routes옵션은 라우트 자체를 정의하고 URL경로를 컴포넌트에 매핑합니다. component 옵션으로 지정된 컴포넌트는 RouterView에 의해서 렌더링될 컴포넌트입니다. history 옵션은 라우트가 URL에 어떻게 매핑되는지, 그 반대의 경우에 대해서도 제어합니다.
<script setup>
import { computed } from 'vue'
import { useRoute, useRouter } from 'vue-router'
const router = useRouter()
const route = useRoute()
const search = computed({
get() {
return route.query.search ?? ''
},
set(search) {
router.replace({ query: { search } })
}
})
</script>
const router = new VueRouter({ ... })
router.beforeEach((to, from, next) => {
// ...
})
const router = new VueRouter({
routes: [
{
path: '/foo',
component: Foo,
beforeEnter: (to, from, next) => {
// ...
}
}
]
})
const Foo = {
template: `...`,
beforeRouteEnter (to, from, next) {
// 이 컴포넌트를 렌더링하는 라우트 앞에 호출됩니다.
// 이 가드가 호출 될 때 아직 생성되지 않았기 때문에
// `this` 컴포넌트 인스턴스에 접근 할 수 없습니다!
},
beforeRouteLeave (to, from, next) {
// 이 컴포넌트를 렌더링하는 라우트가 이전으로 네비게이션 될 때 호출됩니다.
// `this` 컴포넌트 인스턴스에 접근 할 수 있습니다.
}
}
참조
몰랐던 Vue Router에 대해 배울 수 있는 좋은 시간이었습니다! 감사합니다.