๐Ÿ“• 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');
    },
  },
};