#このチュートリアルの動作環境: Windows7 システム、vue3 バージョン、DELL G3 コンピューター。 vue-router が提供するナビゲーション フックは主に次の目的で使用されます。ナビゲーションをインターセプトします。ジャンプを完了させるか、キャンセルします。Vue には 3 種類のナビゲーション フックがあります: 1. グローバル ガード フック、これはルーティング サンプルに直接動作するフック関数を指し、すべてのルーティング設定コンポーネントがトリガーされるという特徴があります。 2. ルート専用ガードフックとは、単一ルート設定時にも設定でき、そのルート下でのみ動作するフック機能を指します。 3. ローカルガードフックとは、配列内のライフサイクル関数と同様にコンポーネント内で実行されるフック関数を指し、ルーティングが設定されたコンポーネントに追加されたライフサイクルフック関数に相当します。
#ナビゲーション フックの分類グローバル ガード
[beforeEach]<strong>: ルートがジャンプする前にトリガーされます。パラメーターには、to、from、next が含まれます。このフックの主な機能これはログイン認証に使用されます。つまり、ルートがジャンプする前に事前に通知され、ジャンプしてから通知するのが手遅れになることを回避します。 </strong><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:js;toolbar:false;"> router.beforeEach router.beforeResolve router.afterEach
const router = new VueRouter({ ... });
router.beforeEach((to, from, next) => {
// do someting
});</pre><div class="contentsignin">ログイン後にコピー</div></div>
#[beforeResolve] <strong>: このフックは beforeEach に似ています。ルートがジャンプする前にもトリガーされます。また、to、from、next の 3 つのパラメーターがあります。beforeEach との違いの公式説明は次のとおりです: </strong>
つまり、コンポーネント内の beforeEach と beforeRouteEnter の後、afterEach の後、および afterEach の前に呼び出されます。
[afterEach]<strong>: beforeEach とは対照的に、ルート ジャンプが完了した後にトリガーされます。パラメーターには to と from が含まれます。次に、beforeEach と beforeResolve の後、および beforeRouteEnter (ガード内のフットプリント) の前に発生します。 </strong><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:js;toolbar:false;"> const router = new VueRouter({ ... });
router.beforeEach((to, from, next) => {
// do someting
});
//全局后置钩子,后置钩子并没有 next 函数,也不会改变导航本身
router.afterEach((to, from) => {
// do someting
});</pre><div class="contentsignin">ログイン後にコピー</div></div>
[beforeEnter]: beforeEach とまったく同じです。両方を設定すると、beforeEach の直後に実行されます。パラメータは to、from、next です。
cont router = new VueRouter({
routes: [
{
path: '/file',
component: File,
beforeEnter: (to, from ,next) => {
// do someting
}
}
]
});
const File = { template: `<div>This is file</div>`, beforeRouteEnter(to, from, next) { // do someting // 在渲染该组件的对应路由被 confirm 前调用 }, beforeRouteUpdate(to, from, next) { // do someting // 在当前路由改变,但是依然渲染该组件是调用 }, beforeRouteLeave(to, from ,next) { // do someting // 导航离开该组件的对应路由时被调用 } }
ルート ジャンプ ナビゲーションの解析process, when A からルーティングするとき ->B1. A コンポーネントでリーブ ガードを呼び出します。コンポーネント A の beforeRouterLeave
2 は、グローバル beforeEach ガードを呼び出します。 router.beforeEach
3. 次に、ルート B 設定で beforeEnter を実行します。
routes:[ { path:'/b', component:B, beforeEnter:(to,form,next)=>{ ..... } } ]
4. 次に、コンポーネント B のエントリ ガードを実行します。コンポーネント B では、beforeRouterEnter
5 がグローバル beforeResolve ガード (2.5) を呼び出します。 router.beforeResolve
6. ナビゲーションが確認されました。
7. グローバルの afterEach フックを呼び出します。 router.afterEach
8、DOM 更新をトリガーします。
[関連する推奨事項:
vuejs ビデオ チュートリアル以上がVue のナビゲーション フックとは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。