๐ Language/Vue
[vuejs] vue-router ๋์ ๋ผ์ฐํ
a n u e
2023. 2. 7. 11:25
โ ๋์ ๋ผ์ฐํ
URL์ด ํ์์ ๋ฐ๋ผ ๋ฐ๋์ด์ผํ๋ ๊ฒฝ์ฐ ์๋์ ๊ฐ์ด ์ฝ๋ก (:)์ ์ฌ์ฉํ์ฌ ํ๋ผ๋ฏธํฐ๋ฅผ ๋ฃ์ด์ค ์ ์๋ค.
ํ๋ผ๋ฏธํฐ์ ์ด๋ฆ์ด id ์ธ ๊ฒ์ ํ์๋ ์๋๋, ์ปจ๋ฒค์ ์ด๋ผ๊ณ ํจ
const routes = [
{
path: '/user/:id',
component: UserAuth,
},
{
path: '/main',
component: Main,
},
]
export default routes
๋ฌผ๋ก ๋ ๊ฐ ์ด์์ ๋์ ํ๋ผ๋ฏธํฐ๋ฅผ ๊ฐ์ง ์๋ ์๋ค.
{
path: '/user/:id/auth/:pageNm',
component: UserAuth,
},
<p v-for="item in arr" :key="item">
<router-link :to="`user/${item.id}`"> {{ item.user }} </router-link>
</p>
ํด๋น ์ปดํฌ๋ํธ์์ ํ๋ผ๋ฏธํฐ์ ๋ณ๊ฒฝ ์์ ์ ์ก๊ณ ์ถ๋ค๋ฉด?
๋ฐฉ๋ฒ 1. watch๋ก $route ๊ฐ์ฒด๋ฅผ ๊ฐ์งํ๋ฉด ๋๋ค.
watch: {
'$route' (to, from) {
console.log(this.$route.params.id);
}
}
๋ฐฉ๋ฒ 2. ์ปดํฌ๋ํธ ๊ฐ๋์ธ 'beforeRouteUpdate' ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ค.
new VueRouter({
routes: [{ path: "/user/:id", component: User }],
});
// ํ์์ ์ URL : user/1
export default {
beforeRouteUpdate(to, from, next) {
console.log(this.$route.params.id); //1
next();
},
methods: {
moveToNext() {
// ํ์ด์ง ์ด๋ ์ beforeRouteUpdate ํธ์ถ
this.$router.push('/user/2');
},
},
};