티스토리 뷰
<router-link>
를 사용하여 선언적 네이게이션용 앵커(anchor) 태그를 만드는 것 외에도 vue-router의 인스턴스 메소드를 사용하여 프로그래밍으로 네비게이션을 수행할 수 있습니다.
1. router.push(location, onComplete?, onAbort?)
Vue 인스턴스 내부의 $router
를 사용하여 this.$router.push
와 같이 사용할 수도 있습니다.router.push
는 다른 URL로 이동할 때 사용됩니다. 이 메소드는 새로운 URL을 히스토리 스택에 넣기 때문에 사용자가 브라우저의 뒤로가기 버튼을 클릭하면 이전 URL로 이동하게 됩니다.<router-link :to="...">
를 클릭하면 router.push(...)
를 호출하는 것과 같습니다.
전달 인자
전달인자는 문자열 또는 객체가 될 수 있습니다.
// 리터럴 string
router.push('home')
// object
router.push({ path: 'home' })
// 이름을 가지는 라우트
router.push({ name: 'user', params: { userId: 123 }})
// 쿼리와 함께 사용, 결과는 /register?plan=private 입니다.
router.push({ path: 'register', query: { plan: 'private' }})
2.2.0 버전 이후 router.push
와 router.replace
메소드는 두번째와 세번째 전달인자로 onComplete
와 onAbort
콜백을 제공합니다. 이 콜백은 탐색이 성공적으로 완료되었거나 중단 될 때 호출 됩니다.
2. router.replace(location)
router.push
와 같은 역할을 하지만 차이점은 새로운 URL을 히스토리 스택에 추가하지 않습니다. 이름에서 알 수 있듯이 현재 URL을 대체합니다.<route-link :to="..." replace>
를 클릭하면 router.replace(...)
를 호출하는 것과 같습니다.
3. router.go(n)
이 메소드는 window.history.go(n)
과 비슷하게 히스토리 스택에서 n
만큼 앞, 뒤로 이동하는 메소드입니다.
// 한 단계 앞으로 갑니다. history.forward()와 같습니다. history.forward()와 같습니다.
router.go(1)
// 한 단계 뒤로 갑니다. history.back()와 같습니다.
router.go(-1)
// 3 단계 앞으로 갑니다.
router.go(3)
// 지정한 만큼의 기록이 없으면 자동으로 실패 합니다.
router.go(-100)
router.go(100)
4. History 조작
router.push
, router.replace
, router.go
는 각각 window.history.pushState
, window.history.replaceState
, window.history.go
에 매칭됩니다.
vue-router의 네비게이션 메소드(push
, replace
, go
)는 모든 라우터 모드(history
, hash
, abstract
)에서 동일하게 동작합니다.
참고
'Vue.JS' 카테고리의 다른 글
[vue-router] Redirect 와 Alias (0) | 2019.06.12 |
---|---|
[vue-router] Named Routes & Views (0) | 2019.06.10 |
[vue-router] 중첩된 라우트 (0) | 2019.06.09 |
[vue-router] 동적 라우트 매칭 (0) | 2019.06.09 |
[vue-router] 시작하기 (0) | 2019.06.06 |