정상적인 페이지 이동을 막는 기능입니다.
src > router > index.js
router를 설정한 파일 내에 작성합니다.
- beforeEach
router.beforeEach((to, from) => {
console.log('to: ', to) // 이동할 페이지 정보
console.log('from: ', from) // 이동하기 전의 페이지 정보
})
값으로 false, router path, router name을 반환할 수 있습니다.
router.beforeEach((to, from) => {
console.log('to: ', to) // 이동할 페이지 정보
console.log('from: ', from) // 이동하기 전의 페이지 정보
if(to.name === 'myPage') {
return false // 페이지 이동 불가
return { name: 'home' } // home으로 이동
return '/login' // login으로 이동
}
})
router에 직접 가드하는 방법
- beforeEnter
{
path: '/myPage',
name: 'MyPage',
component: MyPage,
beforeEnter: (to, from) => {
console.log('to: ', to) // 이동할 페이지 정보
console.log('from: ', from) // 이동하기 전의 페이지 정보
return false // 페이지 이동 불가
return { name: 'home' } // home으로 이동
return '/login' // login으로 이동
}
}
Component에서 가드하는 방법
- beforeRouteEnter
- onBeforeRouteUpdate
- onBeforeRouteLeave
<script setup>
onBeforeRouteUpdate(() => {
// 현재 router가 변경될 때
})
onBeforeRouteLeave(() => {
// 현재 router를 떠날 때
})
</script>
<script>
export default {
// setup보다 먼저 실행됩니다.
// router에 진입하기 전
beforeRouteEnter() {
}
}
</script>
'Vue' 카테고리의 다른 글
[Vue] i18n 특수 문자 오류 (0) | 2024.03.25 |
---|---|
[Vue] unref(), toRaw() (0) | 2024.02.16 |
[Vue] Vue Router 데이터 전달하기 (0) | 2024.01.05 |
[Vue] Vue Router history 쌓이지 않는 방법 (3) | 2024.01.03 |
[Vue] 컴포넌트 전역 등록 장단점 (1) | 2023.12.27 |