機能: ルートの権限を制御する カテゴリ: グローバルガード、専用ガード、コンポーネントガード 1. グローバルガード1.1 グローバルフロントガード名前が示すように、プリガードは主に、ルートをジャンプする前に、ステータスに基づいて一連の操作を実行することです(グローバルプリガードは、ルートが初期化されてジャンプする前にトリガーされます)。 router.beforeEachを使用してグローバル プリガード (Each: each、つまり、ルートがジャンプするときにトリガーされます) を登録できます。 各ガード メソッドは次の 3 つのパラメータを受け取ります。 to:Route : ターゲットに入ろうとしているルートオブジェクト from:Route : 現在のナビゲーションがこれから出発するルート next:function : このフックを解決するには、このメソッドを呼び出す必要があります。実行効果は次のメソッドの呼び出しパラメータに依存する 1. next() : パイプラインの次のフックに移動します (to)。フックが実行されると、ナビゲーション状態が確定します。 2. next(false) : 現在のナビゲーションを中断します。ブラウザの URL が変更された場合 (ユーザーが手動で変更した場合や、ブラウザの戻るボタンを押した場合など)、アドレスは from ルートに対応するアドレスにリセットされます。 3. next('/")またはnext({path:'/'}) : 同じアドレスにジャンプします。現在のナビゲーションが中断され、新しいナビゲーションが作成されます。 next には任意のオブジェクトを渡すことができ、replace:true、name:'home' などのオプションや、router-link の任意のオプションを prop または router.push に設定できます。 特定のナビゲーション ガードで、次の関数が 1 回だけ呼び出されるようにしてください。この関数は複数回出現できますが、すべてのロジック パスが重複していない場合に限られます。重複していない場合、フックは解決されないか、エラーが発生します。 1.1.1 使用方法 開始、終了、次へを印刷して、保存される情報を確認できます。 例 'vue' から Vue をインポートします 'vue-router' から VueRouter をインポートします。 '../views/Home.vue' から Home をインポートします。 '../views/About.vue' から About をインポートします。 '../views/News.vue' から News をインポートします。 '../views/Message.vue' からメッセージをインポートします。 Vue.use(VueRouter) const ルート = [{ パス: '/home', 名前: 'ホーム'、 コンポーネント: ホーム、 子供たち:[ { パス: 'message', // 書き込まないでください: /news コンポーネント: メッセージ } ] }, { パス: '/about', 名前: 'aboutName', コンポーネント: について、 children: [{ //children を通じて子ルーティングを構成する path: 'news', //ここには書かないでください: /news コンポーネント: ニュース }] } ] const ルーター = 新しい VueRouter({ ルート }) //グローバル フロント ルーティング ガード---初期化時およびルートが切り替えられるたびに呼び出されます router.beforeEach((to, from, next) => { console.log(に); //これは簡単な例です //つまり、ユーザーが認証を必要とするルートに入ったかどうかを判断します (ここでの距離はニュースとメッセージです) to.path == '/home/message' || to.path === '/about/news' の場合 { //入力した場合、情報がローカルにキャッシュされているかどうかを判断します(ここではログイントークンをシミュレートします) if (localStorage.getItem('name') === 'haungzhizhen') { 次() } }それ以外{ //そうでない場合は、安心して next() を呼び出してください } }) デフォルトルーターをエクスポートする 上記の例の欠点の 1 つは、認証が必要なルートが多数ある場合、それらを 1 つずつ判断する必要があることです。それは必要ないので、ここではルートの別の属性、つまり各ルートで設定できるメタを紹介します。これは通常、識別情報を使用して属性を識別するために使用され、次のように強制的に判断できます。 //メタを使用する router.beforeEach((to, from, next) => { console.log(に); if (to.meta.isAuth){//認証が必要かどうかを判断if (localStorage.getItem('name') === 'haungzhizhen') { 次() } } それ以外 { 次() } }) 1.2 グローバルポストルートガード//グローバルなポストルートガード --- 初期化中および各ルートの切り替え後に呼び出されます router.afterEach((to, from) => { if (to.meta.title) { document.title = to.meta.title || 'ルーティングジャンプの例' //Webページのタイトルを変更する }それ以外{ ドキュメントのタイトル = 'vue_test' } }) 1.3 統合2. ルーター固有のガードルート設定で beforeEnter ガードを直接定義できます。これらのパラメータは、グローバル before ガードのメソッド パラメータと同じです。 const ルーター = 新しい VueRouter({ ルート: [ { パス: '/foo', コンポーネント: Foo、 beforeEnter: (to, from, next) => { // ... } } ] }) 3. コンポーネント内のガード最後に、ルート コンポーネント内で直接ルート ナビゲーション ガードを定義できます。
定数Foo = { テンプレート: `...`, beforeRouteEnter(to, from, next) { // このコンポーネントをレンダリングする対応するルートが確認される前に呼び出されます // いいえ!できる!コンポーネントインスタンス `this` を取得します。 // ガードが実行される前にコンポーネントインスタンスが作成されていないため}, ルート更新前(to、from、next) { // 現在のルートが変更されたがコンポーネントが再利用されたときに呼び出されます // たとえば、動的パラメータを持つパス /foo/:id の場合、/foo/1 と /foo/2 の間を移動すると、 // 同じ Foo コンポーネントがレンダリングされるため、コンポーネント インスタンスが再利用されます。この場合、このフックが呼び出されます。 // コンポーネントインスタンス `this` にアクセスできます }, beforeRouteLeave(to, from, next) { // このコンポーネントの対応するルートから移動するときに呼び出されます // コンポーネントインスタンス `this` にアクセスできます } } Vue でのルーティング ガードの具体的な使用法に関するこの記事はこれで終わりです。Vue ルーティング ガードに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
1. DockerはローカルディレクトリをマウントしますDocker は、ホスト上のディレクトリをイ...
タイトルの通り、高さは既知で、左と右の列の幅は 300 ピクセル、中央は適応型です。弾性ボックス自体...
目次フロントエンド上記のアイデアに従って、ページめくり機能を設計して記述します。バックエンド(Jav...
RedHat6.5インストールMySQL5.7チュートリアル共有、参考までに、具体的な内容は次のとお...
目次1. シナリオ2. 解決策3. 結論4. 参考文献1. シナリオ日常の開発およびテスト作業には ...
VMware Workstation は、開発、テスト、デモンストレーション、展開のために仮想マシン...
次のコードを index.html などのデフォルトのホームページ ファイルとして保存し、ルート デ...
この記事は、参考のためにMySQL 8.0.12のインストールグラフィックチュートリアルを記録してい...
序文皆さんは Linux で top コマンドを使ったことがあると思います。私は Linux に触れ...
この記事の例では、JavaScriptで4桁のランダムな検証コードを生成する具体的なコードを参考まで...
MySQL 5.7.18 が正常にインストールされた後、バージョン 5.7 では空のパスワードでのロ...
1. 各関数はオブジェクトであり、メモリを占有します。メモリ内のオブジェクトが増えるほど、パフォーマ...
<br />前回の記事:優秀なデザイナーの7つの原則(1):フォントデザイン 英語 原文...
1. コマンドの紹介userdel (ユーザー削除) コマンドは、ユーザー アカウントと関連ファイル...
Linux に VMWare をインストールするには、公式 Web サイト https://www....