概要ルートガードとは何ですか?ルート ガードは、リクエストが送信される前にそれをインターセプトし、リクエストを送信する前に何かを行う Ajax リクエスト インターセプターに少し似ています。ここでのルート ガードは同様の意味を持ちます。簡単に言えば、ルートに入る前に停止してチェックするということです。これは中学校の門の警備員のようなものでしょうか。入場前に停止し、学生証を持っている場合は入場を許可しますが、学生証を持っていない場合は入場を許可しません。もちろん、ルーティング ガードは入場前に停止するだけでなく、他の操作を実行するためのフック関数もあります。 Vue-router は、ルーティングガードを実装するための 3 種類のフック関数を提供します。 1. グローバルフック関数(beforeEach、afterEach) 2. ルーティング固有のフック関数(beforeEnter) 3. コンポーネント内のフック関数(beforeRouterEnter、beforeRouterUpdate、beforeRouterLeave) まず、グローバル フック関数を見てみましょう。 グローバルフック関数それぞれの前: beforeEach は、to、from、next の 3 つのパラメータを受け取ります。to: 入るルート オブジェクト。from: 出るルート オブジェクト。next: ルートの制御パラメータ。 次に呼び出す方法は 4 つあります。 next(): すべてがうまくいけば、このメソッドを呼び出して次のフックに入ります。 next(false): ルートナビゲーションをキャンセルします。この時のURLはこれから出発するルートアドレスを表示します。 next('/login'): 現在のルートを終了し、新しいルートナビゲーションに入ります(ルートアドレスは自由に指定できます) next(error): ルートナビゲーションが終了し、router.onError() によって登録されたコールバックにエラーが渡されます。 通常、ログインせずにページに入るときにログイン ページにジャンプする、現在のページにアクセスするためにユーザーが到達する必要があるレベルなど、権限を制御するためにグローバル フックを使用します。これらはすべてページ権限の制御であり、beforeEach フック関数を通じて実現できます。 main.js (グローバル フック関数は通常 main.js に記述されます): // ルートに入る前のメソッドフック router.beforeEach((to, from, next) => { console.log(to, '最初のパラメータを先頭に追加') console.log(from, '2番目のパラメータを先頭に追加') console.log(次に、'3番目のパラメータを先頭に追加') / ソースルートからターゲットルートへ、次のルートへジャンプ*/ //ここでは、local と storange を使用して権限の検証をシミュレートします if (window.localstorange.getItem("token")) { // 存在する場合は、対応するルートに直接ジャンプします next(); } それ以外 { // 存在しない場合はログインページに移動します next('/login'); } }); それぞれの後: AfterEach は beforeEach と同様にグローバル ガード フックであり、main.js で呼び出されます。AfterEach には beforeEach よりも 1 つ少ない next パラメータがあります。 from: 出発しようとしているルート オブジェクト。 afterEach() は通常、ページのスクロール バーの位置をリセットするために使用されます。 非常に長いページがあり、その中の特定の位置までスクロールすると、新しいページのスクロール バーの位置は前のページがあった位置になります。このとき、afterEach を使用してリセットできます。 //グローバルルート変更フック router.afterEach((to, from) => { //スクロールバーを一番上に戻します。window.scrollTo(0, 0); }) ルーティング固有のフック関数前入力: 名前が示すように、指定されたルートにのみこれらのフック関数があります。通常、これらのフック関数はルート設定ファイルで設定します。変更前のフックのみ設定でき、変更後のフックは設定できません。 const ルーター = 新しい VueRouter({ ルート }); 定数ルート = [ { パス:'/page1', コンポーネント:ページ1、 子供たち: [ { パス: "電話", コンポーネント: 電話 }, { パス: "コンピュータ", コンポーネント: コンピュータ }, ]、 //ルート限定フック関数 beforeEnter:(to,from,next)=>{ console.log(に); console.log(から); 次へ(偽); } }, 上記のコードは、beforeEnter フックが /page1 に入ったときにのみトリガーされることを意味します。他のページに入った場合はトリガーされません。 コンポーネント内のフック関数beforeRouteEnter(to,from,next): ルートに入る前に呼び出されます。この時点では Vue インスタンスが作成されていないため、beforeEnter はこれを使用できない唯一のフック関数です。 to: 入力するルート オブジェクト。 from: 出発しようとしているルート オブジェクト。 次へ: ルーティング制御パラメータ ルート更新前(to、from、next): 前回の記事で説明した動的ルート パラメータ転送など、ルートが変更されたときに呼び出されます。この場合は beforeRouteUpdate も呼び出されます。 to: 入力するルート オブジェクト。 from: 出発しようとしているルート オブジェクト。 次へ: ルーティング制御パラメータ。 ルート出発前(出発地、出発地、次): ルートがコンポーネントを離れるときに呼び出されます。 to: 入力するルート オブジェクト。 from: 出発しようとしているルート オブジェクト。 次へ: ルーティング制御パラメータ 注: beforeRouteEnter がトリガーされたときに vue インスタンスが作成されていないため、このフック関数では使用できませんが、beforeRouteUpdate と beforeRouteLeave は、これら 2 つの関数がトリガーされたときにインスタンスが作成されているため、インスタンスにアクセスできます。 コンポーネント内でフック関数を呼び出す場合、通常はコンポーネント内で呼び出します。例: <テンプレート> <div> <h1 id="h1">ホーム</h1> <p> <router-link to="/page1/phone">携帯電話</router-link> <router-link to="/page1/computer">コンピュータ</router-link> </p> <ルータービュー></ルータービュー> </div> </テンプレート> <スクリプト> エクスポートデフォルト{ //ルートに入る前に呼び出す beforeRouteEnter (to, from, next) { window.document.title = "ようこそ"; 次(); }, //ルートが変更されたときにbeforeRouteUpdate(to,from,next)を呼び出す{ }, //ルートが出発するときに呼び出されます beforeRouteLeave(to,from,next){ }, データ () { 戻る { メッセージ: 「私はページ1コンポーネントです」 } }, } </スクリプト> 上記はルーティングガードを実装するためのvue-routerフック関数の詳細です。vue-routerルーティングガードの詳細については、123WORDPRESS.COMの他の関連記事に注目してください。 以下もご興味があるかもしれません:
|
<<: Linux で Squid プロキシ サーバーを構築するための完全な手順
>>: mysql バックアップ スクリプト mysqldump の使い方の詳細な説明
フロントエンドのデザイン案では、「X」や「>」の形をした閉じるボタンや、他の 3 方向の白抜き...
原因: java.sql.SQLException: 列の文字列値が正しくありません: '\...
今日は、初心者の次のような質問に答えます。学ぶ勇気さえあれば、自分のウェブサイトを構築するのは簡単で...
環境の紹介オペレーティングシステム: Centos 7.4 Zabbix バージョン: zabbix...
目次1. パラダイム基盤1.1 パラダイムの概念2. 3つの主要なパラダイム2.1 3つの主要なパラ...
最も人気のあるタグはIE8ですブラウザベンダーはバージョンアップデートのリリースに躍起になっている一...
目次1. DATETIMEとTIMESTAMPの使用1. 類似点2. 相違点3. 選択2. varc...
「開発とは、単にコードを書くだけではない」というのは、3EV の Dan Frost 氏の言葉です。...
図に示すように: 1 つのページには多数のファイルが接続されているため、ファイルを参照するときには、...
このチュートリアルでは、MySQL 5.7.18のインストールと設定方法を参考までに紹介します。具体...
参考までに、Vue シングル サインオンのデモをご紹介します。詳細を知りたい方のお役に立てれば幸いで...
目次セットは値が重複しない特別なコレクションです。セットコレクション基本API独自の価値判断セットを...
目次1. 数字を逆にする2. 配列内の最大のn個の数値を取得する3. 階乗を計算する4. 現在の動作...
この記事では、アコーディオン効果を実現するためのjsの具体的なコードを参考までに共有します。具体的な...
プロジェクトの展開中に遭遇した落とし穴Zhihudemo を展開する際、Jenkins などの自動展...