프레임워크/Vue

[Vue] Nested Routes

은돌1113 2024. 4. 27. 14:06

vue-router에서 중첩된 routes를 만들고 싶을 때는 Nested Routes 방식을 사용할 수 있습니다.

 

아래 코드처럼 기본에 routes 설정하듯이 path와 component를 설정해 주고,

추가로 children이라는 배열을 추가해서 그 안에 동일하게 path와 component를 설정해 주면 됩니다.

const routes = [
  {
    path: '/user/:id',
    component: User,
    children: [
      {
        path: 'profile',
        component: UserProfile,
      },
      {
        path: 'posts',
        component: UserPosts,
      },
    ],
  },
]

 

여기서 주의할 점은 각 route의 경로가 부모 라우트의 경로를 기반으로 결정되기 때문에 nested routes를 사용할 때 children에 설정된 route의 path는 상대 경로로 설정하여 부모 route의 경로가 바뀌더라도 해당 부모 route 아래의 모든 중첩된 라우트의 경로가 자동으로 조정될 수 있도록 설정해야 합니다.

 

결론적으로는 Nested Routes를 사용할 때는 해당 route의 path를 상대 경로로 설정해줘야 한다.

 

그렇지 않을 경우 F12 + 콘솔에 아래와 같이 경고 문구가 뜬다.

 

그리고 해당 부모 route에 연결된 컴포넌트에 <router-view/>를 사용하면

해당 url에 접속했을 때 정상적으로 중첩된 컴포넌트가 노출됩니다.