vue의 router.beforeEach가 두 번 진행되는 이유는 무엇입니까?
Vue에서는 다음과 같은 이유로 router.beforeEach가 두 번 실행될 수 있습니다. 1. 잘못된 탐색 순서 2. 여러 라우팅 가드 3. Vuex 저장소 변경. 이를 방지하려면 beforeEach에서 탐색을 수행하지 말고, 여러 경로 가드를 병합하고, 시계를 사용하여 Vuex 스토리지 변경 사항을 수신하세요.
Vue의 router.beforeEach
가 두 번 진행되는 이유는 무엇인가요? router.beforeEach
会走两次?
router.beforeEach
是 Vue Router 中的一个钩子函数,它会在路由导航发生之前触发。一般情况下,它只会被触发一次,但在某些特定情况下,它可能会被触发两次。
可能的原因:
-
错误的导航顺序:如果在
beforeEach
钩子函数内部执行了路由导航,则该钩子函数将再次触发。这是因为路由导航是一个异步过程,在它完成之前,beforeEach
钩子函数可能已经被执行了。 -
多个路由守卫:如果有多个路由守卫(global 和 per-route)注册了
beforeEach
钩子函数,则它们都会被触发。这可能会导致重复的逻辑或意外行为。 -
Vuex 存储变更:如果
beforeEach
钩子函数依赖于 Vuex 存储的状态,并且在导航期间触发了状态变更,则该钩子函数可能会被再次触发。这是因为 Vuex 存储变更会触发组件重新渲染,这反过来又会导致路由导航。
如何避免:
为了避免 router.beforeEach
触发两次,可以采取以下措施:
-
避免在
beforeEach
钩子函数中执行路由导航:如果需要在beforeEach
钩子函数中执行路由导航,请使用next()
回调来延迟导航,直到当前导航完成。 -
合并多个路由守卫:如果有多个路由守卫需要注册
beforeEach
钩子函数,请考虑将它们合并为一个函数。 -
使用 watch 监听 Vuex 存储变更:如果
beforeEach
钩子函数依赖于 Vuex 存储的状态,请使用 Vuex 的watch()
函数来监听状态变更,而不是在导航期间触发状态变更。
结论:
router.beforeEach
在 Vue 中触发两次通常是由于错误的导航顺序、多个路由守卫或 Vuex 存储变更。通过遵循上述措施,可以避免这种情况,确保 beforeEach
router.beforeEach
는 경로 탐색이 발생하기 전에 트리거되는 Vue Router의 후크 기능입니다. 일반적으로 한 번만 실행되지만 특정 경우에는 두 번 실행될 수도 있습니다. 🎜🎜🎜가능한 원인: 🎜- 🎜잘못된 탐색 순서: 경로 탐색이
beforeEach
후크 함수 내에서 수행되면 후크 기능이 실행됩니다. 다시. 이는 경로 탐색이 비동기 프로세스이고beforeEach
후크 기능이 완료되기 전에 실행되었을 수 있기 때문입니다. - 🎜다중 경로 가드:
beforeEach
후크 기능으로 등록된 여러 경로 가드(전역 및 경로별)가 있는 경우 모두 트리거됩니다. 이로 인해 논리가 중복되거나 예상치 못한 동작이 발생할 수 있습니다. - 🎜Vuex 저장소 변경:
beforeEach
후크 기능이 Vuex 저장 상태에 의존하고 탐색 중에 상태 변경이 트리거되는 경우 후크 기능이 다시 트리거될 수 있습니다. . Vuex 저장소 변경으로 인해 구성 요소가 다시 렌더링되어 경로 탐색이 발생하기 때문입니다.
router.beforeEach
가 두 번 트리거되는 것을 방지하려면 다음 조치를 취할 수 있습니다. 🎜- 🎜
beforeEach
후크 함수에서 경로 탐색 실행을 피하세요:beforeEach
후크 함수에서 경로 탐색을 실행해야 하는 경우를 사용하세요. 현재 탐색이 완료될 때까지 탐색을 지연시키는 next()
콜백입니다. - 🎜여러 경로 가드 병합:
beforeEach
후크 기능을 등록해야 하는 경로 가드가 여러 개인 경우 이를 하나의 기능으로 병합하는 것을 고려해 보세요. - 🎜watch를 사용하여 Vuex 저장소 변경 사항 모니터링:
beforeEach
후크 기능이 Vuex 저장소 상태에 따라 달라지는 경우 Vuex의watch() 탐색 중에 상태 변경을 트리거하는 대신 상태 변경을 수신하는 기능입니다.
router.beforeEach
가 Vue에서 두 번 실행되는 것은 일반적으로 잘못된 탐색 순서, 여러 경로 가드 또는 Vuex 저장소 변경으로 인해 발생합니다. 위의 단계를 수행하면 이러한 상황을 방지하고 beforeEach
후크 기능이 예상대로 실행되는지 확인할 수 있습니다. 🎜위 내용은 vue의 router.beforeEach가 두 번 진행되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











vue.js에서 JS 파일을 참조하는 세 가지 방법이 있습니다. & lt; script & gt; 꼬리표;; mounted () 라이프 사이클 후크를 사용한 동적 가져 오기; Vuex State Management Library를 통해 수입.

vue.js의 시계 옵션을 사용하면 개발자가 특정 데이터의 변경 사항을들을 수 있습니다. 데이터가 변경되면 콜백 기능을 트리거하여 업데이트보기 또는 기타 작업을 수행합니다. 구성 옵션에는 즉시 콜백을 실행할지 여부와 DEEP를 지정하는 즉시 포함되며, 이는 객체 또는 어레이에 대한 변경 사항을 재귀 적으로 듣는 지 여부를 지정합니다.

vue.js에서 bootstrap 사용은 5 단계로 나뉩니다 : Bootstrap 설치. main.js.의 부트 스트랩 가져 오기 부트 스트랩 구성 요소를 템플릿에서 직접 사용하십시오. 선택 사항 : 사용자 정의 스타일. 선택 사항 : 플러그인을 사용하십시오.

HTML 템플릿의 버튼을 메소드에 바인딩하여 VUE 버튼에 함수를 추가 할 수 있습니다. 메소드를 정의하고 VUE 인스턴스에서 기능 로직을 작성하십시오.

CSS 애니메이션 또는 타사 라이브러리를 사용하여 VUE에서 Marquee/Text Scrolling Effects를 구현하십시오. 이 기사는 CSS 애니메이션 사용 방법을 소개합니다. & lt; div & gt; CSS 애니메이션을 정의하고 오버플로를 설정하십시오 : 숨겨진, 너비 및 애니메이션. 키 프레임을 정의하고 변환을 설정하십시오 : Translatex () 애니메이션의 시작과 끝에서. 지속 시간, 스크롤 속도 및 방향과 같은 애니메이션 속성을 조정하십시오.

vue.js에서 게으른 로딩을 사용하면 필요에 따라 부품 또는 리소스를 동적으로로드 할 수 있으므로 초기 페이지로드 시간을 줄이고 성능을 향상시킵니다. 특정 구현 방법에는 & lt; keep-alive & gt를 사용하는 것이 포함됩니다. & lt; 구성 요소는 & gt; 구성 요소. 게으른 하중은 FOUC (Splash Screen) 문제를 일으킬 수 있으며 불필요한 성능 오버 헤드를 피하기 위해 게으른 하중이 필요한 구성 요소에만 사용해야합니다.

vue.js는 이전 페이지로 돌아갈 수있는 네 가지 방법이 있습니다. $ router.go (-1) $ router.back () 사용 & lt; router-link to = & quot;/quot; Component Window.history.back () 및 메소드 선택은 장면에 따라 다릅니다.

Vue DevTools를 사용하여 브라우저 콘솔에서 vue 탭을 보면 VUE 버전을 쿼리 할 수 있습니다. npm을 사용하여 "npm list -g vue"명령을 실행하십시오. package.json 파일의 "종속성"객체에서 vue 항목을 찾으십시오. Vue Cli 프로젝트의 경우 "vue -version"명령을 실행하십시오. & lt; script & gt에서 버전 정보를 확인하십시오. vue 파일을 나타내는 html 파일의 태그.
