Vue에는 세 가지 라우팅 가드가 있습니다. 1. 전역 가드 "router.beforeEach" 2. "beforeRouteEnter" 구성 요소 내의 가드 3. 경로 독점 가드 "beforeEnter".
Vue에는 세 가지 유형의 라우팅 가드가 있습니다. 하나는 전역 라우팅 가드, 하나는 구성 요소 내 라우팅 가드, 다른 하나는 라우팅 독점 가드입니다.
루팅 가드는 간단히 말해서 집 문 앞에 있는 경비원으로 이해하면 됩니다. 집에 들어가려면 보안 검사를 통과해야 합니다. ? 낯선 사람만 들어오게 할 수는 없나요? 어디로 갈까요? 그러면 경비원이 다음에 무엇을 해야 하는지 알려 주나요? 실제로 집주인이 출입을 허가한 사람이라면 입장이 허용됩니다. 그렇지 않으면 집주인에게 전화해서 집주인과 상의(로그인 및 등록)해야 합니다. 허가.
// 通过这个匹配判断是否有该权限或要求,这个一般作为页面权限设置,比如哪些页面需要登录才能进入,哪些不需要 to.matched.some(res => res.meta.requireAuth)
router.beforeEach((to,from,next)=>{ if(to.path == '/login' || to.path == '/register'){ next(); }else{ alert('您还没有登录,请先登录'); next('/login'); } })
router.afterEach((to,from)=>{ alert("after each"); })
beforeRouteEnter:(to,from,next)=>{ alert("hello" + this.name);}
进行访问admin页面,会发现alert输出hello undefined
를 직접 사용하는 경우 가드에 대한 특별한 경우가 있습니다. 이는 현재 데이터 속성에 접근할 수 없고 선언 주기와 관련하여 실행 순서가 일치하지 않기 때문입니다. 실행이 완료되기 전에 데이터 데이터가 렌더링되지 않았습니다. 따라서 여기서 next()는 완료를 돕기 위해 해당 콜백을 제공합니다. <script> export default { data(){ return{ name:"Arya" } }, beforeRouteEnter:(to,from,next)=>{ next(vm=>{ alert("hello" + vm.name); }) } } </script>
beforeRouteLeave:(to,from,next)=>{ if(confirm("确定离开此页面吗?") == true){ next(); }else{ next(false); } }
관련 권장 사항:
자세히 더 많은 프로그래밍 관련 지식이 있으면 프로그래밍 학습 코스를 방문하세요! !
위 내용은 Vue 라우팅 가드에는 어떤 유형이 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!