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에 전달 된 콜백을 호출합니다.