const routes = [
{
path: '/',
name: 'PageHome',
component: PageHome
},
{
path: '/board',
name: 'BoardList',
component: BoardList
},
{
path: '/detail',
name: 'BoardDetail',
component: BoardDetail
},
{
path: '/write',
name: 'BoardWrite',
component: BoardWrite
},
]
BoardList
, BoardDetail
, BoardWrite
는 모두 게시판에 관한 기능이므로 공통 url을 /board
로 묶어야겠다고 생각했다.const routes = [
{
path: '/',
name: 'PageHome',
component: PageHome,
},
{
path: '/board',
name: 'board',
component: BoardList,
children: [
{
path: "write",
component: BoardWrite,
name: 'BoardWrite',
},
{
path: "detail",
component: BoardDetail,
name: 'BoardDetail',
}
]
},
]
/board
에서 /detail
, /write
페이지로 넘어가지 않고, 페이지가 멈춰있는 문제가 발생했다.children을 사용하는 경우는 크게 2가지가 있다.
- 공통 컨포넌트가 존재하는 경우에 공통 컨포넌트에서
<router-view></router-view>
태그를 사용해서 API 요청을 통해 태그에 해당하는 영역을 바꿀 때- 별개의 컨포넌트들을 공통 url을 사용하여 가지 뻗어나갈 때 (v - 원했던 방식)
import { RouterView } from 'vue-router'
const routes = [
{
path: '/',
name: 'PageHome',
component: PageHome,
},
{
path: '/board',
name: 'board',
component: RouterView,
children: [
{
path: "write",
component: BoardWrite,
name: 'BoardWrite',
},
{
path: "detail",
component: BoardDetail,
name: 'BoardDetail',
},
{
path: "list",
component: BoardList,
name: 'BoardList',
}
]
},
]
vue-router
에서 import한 RouterView
를 컨포넌트로 설정하고 List, Detail, Write를 모두 /board
에서부터 뻗어져 나오게 하면 된다!http://xxxxxx/board/write
-> BoardWritehttp://xxxxxx/board/detail
-> BoardDetailhttp://xxxxxx/board/list
-> Boardlist