router의 변경감지는 /user/foo
에서 /user/bar
를 이동할 때 동일한 컴포넌트 인스턴스를 재사용하게 됨
App.vue
에서
<router-view :key="$route.fullPath"/>
router > index.js
에서 페이지 이동 시 항상 맨 위로 scroll을 이동하게 만듬router.afterEach(() => {
window.scrollTo(0,0);
})
watch를 이용하면 동일한 컴포넌트를 랜더링하므로, 이전 인스턴스를 삭제한다음 새 인스턴스를 만드는 것 보다 효율적
그러나, 컴포넌트의 라이프 사이클 훅이 호출되지 않음을 의미
const User = {
template: '...',
watch: {
'$route' (to, from) {
// 경로 변경에 반응하여...
}
}
}
const User = {
template: '...',
beforeRouteUpdate (to, from, next) {
// route가 변경할 때 작동함
// don't forget to call next()
}
}
https://router.vuejs.org/kr/guide/advanced/navigation-guards.html
전체 네비게이션 시나리오
beforeEach
가드 호출.beforeRouteUpdate
가드 호출. (2.2 이상)beforeEnter
호출.beforeRouteEnter
호출.beforeResolve
가드 호출. (2.5이상)afterEach
훅 호출.beforeRouteEnter
가드에서 next
에 전달 된 콜백을 호출합니다.