본문 바로가기

Vue

[Vue] Vue Router 네비게이션 가드

정상적인 페이지 이동을 막는 기능입니다.

 

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