[Vue.js]ビュールータ(Vue Router)-ナビゲーションガード(Navigation Guards)
6780 ワード
ナビゲーション保護
名前の通り、vue-routerが提供するナビゲーション保護は、主にナビゲーションを保護するためにリダイレクトまたはキャンセルするために使用されます.ルーティング・ナビゲーション・プロセスに接続する方法には、グローバル、ルーティング、またはコンポーネントが含まれます.
As the name suggests, the navigation guards provided by vue-router are primarily used to guard navigations either by redirecting it or canceling it. There are a number of ways to hook into the route navigation process: globally, per-route, or in-component.
💡 特定のurlにアクセスする際に最も一般的な方法は、情報が存在するかどうかを検証することです.
Global Before Guard - beforeEnter()
const router = new VueRouter({ ... })
router.beforeEach((to, from, next) => {
// ...
})
to: route
移動するルーティング情報from: route
移動前現在位置のルーティング情報next: function
next()関数を呼び出す必要がありますnext()
next()関数はhookを解決するために呼び出される必要があります.
動作はパラメータ値によって変わります.
next()
フックがない場合は、パイプラインの次のフックに移動します.next(false)
現在のナビゲーションを停止します.ブラウザのURLが変更された場合(ユーザーまたは戻るボタンで手動で変更)、パスのURLにリセットされます.next('/') or next({ path: '/' })
他の場所にリダイレクトします.現在のナビゲーションが停止し、新しいナビゲーションが開始します.next(error)
nextで渡されたパラメータがErrorインスタンスの場合、ナビゲーションが停止し、routerが使用されます.エラーは、onError()を使用して登録されたコールバックに渡されます.Per-Route Guard - beforeEnter()
const router = new VueRouter({
routes: [
{
path: '/foo',
component: Foo,
beforeEnter: (to, from, next) => {
// ...
}
}
]
})
In-Component Guards
const Foo = {
template: `...`,
beforeRouteEnter(to, from, next) {
// called before the route that renders this component is confirmed.
// does NOT have access to `this` component instance,
// because it has not been created yet when this guard is called!
},
beforeRouteUpdate(to, from, next) {
// called when the route that renders this component has changed.
// This component being reused (by using an explicit `key`) in the new route or not doesn't change anything.
// For example, for a route with dynamic params `/foo/:id`, when we
// navigate between `/foo/1` and `/foo/2`, the same `Foo` component instance
// will be reused (unless you provided a `key` to `<router-view>`), and this hook will be called when that happens.
// has access to `this` component instance.
},
beforeRouteLeave(to, from, next) {
// called when the route that renders this component is about to
// be navigated away from.
// has access to `this` component instance.
}
}
出典:Navigation Guards | Vue RouterReference
この問題について([Vue.js]ビュールータ(Vue Router)-ナビゲーションガード(Navigation Guards)), 我々は、より多くの情報をここで見つけました https://velog.io/@devyoung/Vue.js-뷰-라우터-Vue-Router-네비게이션-가드Navigation-Guardsテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol