ホームページ ウェブフロントエンド jsチュートリアル Vue ルーティングの動的リダイレクトとナビゲーション ガード

Vue ルーティングの動的リダイレクトとナビゲーション ガード

Mar 19, 2018 am 11:08 AM
ナビゲーション リダイレクト

この記事では主に Vue のルーティング動的リダイレクトとナビゲーション ガードの例を紹介します。これは参考になるものであり、皆様のお役に立てれば幸いです。編集者をフォローして見てみましょう。皆さんのお役に立てれば幸いです。 vue の公式ドキュメントによると、リダイレクトの詳細な例はありますが、動的リダイレクトの使用方法についての説明はあまりありません。リダイレクト部分の説明は次のとおりです:

リダイレクト

ルート経由 完了すると、次の例では /a から /b にリダイレクトします:


const router = new VueRouter({
 routes: [
 { path: '/a', redirect: '/b' }
 ]
})
ログイン後にコピー

リダイレクト ターゲットは、名前付きルート:


const router = new VueRouter({
 routes: [
 { path: '/a', redirect: { name: 'foo' }}
 ]
})
ログイン後にコピー

、またはリダイレクト ターゲットを動的に返すメソッド:

にすることもできます。

const router = new VueRouter({
 routes: [
 { path: '/a', redirect: to => {
  // 方法接收 目标路由 作为参数
  // return 重定向的 字符串路径/路径对象
 }}
 ]
})`这里写代码片`
ログイン後にコピー

動的リダイレクトの例は以下の通りです:


 { path: '/dynamic-redirect/:id?',
  redirect: to => {
  const { hash, params, query } = to
  if (query.to === 'foo') {
   return { path: '/foo', query: null }
  }
  if (hash === '#baz') {
   return { name: 'baz', hash: '' }
  }
  if (params.id) {
   return '/with-params/:id'
  } else {
   return '/bar'
  }
  }
 }
ログイン後にコピー

まず、パラメータを分解し、ハッシュ、パラメータ、クエリを取得し、取得した値に基づいて論理判断を行って動的にリダイレクトします。ここでの戻り値は、params 値ではなく、パス値です。ルートをリダイレクトするには、既存のパスである必要があります。また、このパスをそれ自体にすることはできません。リダイレクト ルートとして、それ自体にジャンプしてリダイレクトを続けると、無限ループが作成されるからです。

現在の要件は次のとおりです:

ユーザーがルーティングパラメータを不用意に変更してページがクラッシュすることを防ぐために、要件を満たさないパラメータを標準ページにリダイレクトするルーティングリダイレクトが必要です。たとえば、ユーザーは /list/1 にジャンプするためにボタンをクリックしますが、ユーザーは 1 を変更し、非標準パラメータをページに渡します。パラメータ値を変更した後、デフォルトの標準ページにジャンプできることが期待されます

上記のコードが実装されると、ユーザーが仕様を満たさないページ パラメーターを変更すると、ルートがリダイレクトされます。これにより、ページが正しいパラメータ値を取得できるようになります。現在の効果は、ユーザーが /1 を入力すると、通常のページ /list/1 に移動し、/xsajsxoal、/5、/-5 およびその他の非標準パラメーターを入力すると、/list/ にジャンプします。 0.

リダイレクト ロジックに問題はありませんが、問題は依然として存在します。 /list/1 を /list/xsjknxkja に変更し続ける場合、ユーザーはどうすればよいでしょうか?

リダイレクトはこの問題の解決には適していないことがわかります。この時、vue routingのNavigation Guardを使用します。ナビゲーション ガードの実装は次のとおりです:


 {
  path: '/:type',
  name: 'normal',
  component: index,
  beforeEnter (to, from, next) {
  if (/^[0-3]$/.test(to.params.type)) {
   next()
  } else {
   next('/0')
  }
  }
 }
ログイン後にコピー

ナビゲーション ガードに関する公式ドキュメントには次のように説明されています:

vue-router が提供するナビゲーション ガードは、その名の通り、主にナビゲーション ガードを目的として使用されます。ジャンプまたはキャンセルによるナビゲーション。ルート ナビゲーション プロセスを組み込む機会は複数あります。グローバル、単一ルート専用、またはコンポーネント レベルです。

パラメータやクエリを変更しても、開始/終了ナビゲーション ガードはトリガーされないことに注意してください。 $route オブジェクトを監視するか、コンポーネント内ガード beforeRouteUpdate を使用することで、これらの変更に対応できます。

router.beforeEach を使用してグローバル beforeEach ガードを登録できます:


const router = new VueRouter({ ... })
router.beforeEach((to, from, next) => {
 // ...
})
ログイン後にコピー

ナビゲーションがトリガーされると、グローバル beforeEach ガードが作成順に呼び出されます。ガードは非同期で解析および実行されます。現時点では、ナビゲーションはすべてのガードが解決されるまで待機します。

各ガードメソッドは 3 つのパラメータを受け取ります:

to: Route: 進入しようとしているターゲットルートオブジェクト

from: Route: 現在のナビゲーションが出発しようとしているルート

次: 関数: このフックを解決するには、必ずこのメソッドを呼び出してください。実行効果は、次のメソッドの呼び出しパラメータによって異なります。

next(): パイプラインの次のフックに進みます。すべてのフックが実行されると、ナビゲーションのステータスが確認されます。

next(false): 現在のナビゲーションを中断します。ブラウザの URL が変更されると (おそらくユーザーが手動で、またはブラウザの [戻る] ボタンによって)、URL アドレスは from ルートに対応するアドレスにリセットされます。

next(‘/’) または next({ path: ‘/’ }): 別のアドレスにジャンプします。現在のナビゲーションが中断され、新しいナビゲーションが開始されます。

next(error): (2.4.0+) next に渡されたパラメータが Error インスタンスの場合、ナビゲーションは終了し、エラーは router.onError() によって登録されたコールバックに渡されます。

必ず次のメソッドを呼び出してください。そうしないとフックが解決されません。

要件によれば、グローバル ガードを使用する必要はなく、ルート排他的ガードを使用するだけでよいため、ルートに beforeEnter を追加して、パラメーターの仕様を満たしているかどうかを判断するだけで済みます。 next() を使用して次のフックに入るか、そうでない場合は next ('/') を使用してターゲット アドレスにジャンプします。

関連する推奨事項:

Vue.js ルーティング リダイレクト

HTML 接続をリダイレクトする方法

Linux におけるリダイレクトの包括的な分析

以上がVue ルーティングの動的リダイレクトとナビゲーション ガードの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHPのドメイン名リダイレクトとは何ですか? PHP リダイレクトのいくつかの方法のまとめ PHPのドメイン名リダイレクトとは何ですか? PHP リダイレクトのいくつかの方法のまとめ Mar 21, 2023 am 09:35 AM

PHP ドメイン名リダイレクトは重要なネットワーク テクノロジであり、ユーザーがアクセスした異なるドメイン名を同じメイン ドメイン名にリダイレクトする方法です。ドメイン名のリダイレクトは、Web サイトの SEO の最適化、ブランドのプロモーション、ユーザー アクセスなどの問題を解決し、悪意のあるドメイン名の悪用を防ぐこともできます。この記事では、PHPドメイン名リダイレクトの具体的な方法と原理を紹介します。

Web ページのリダイレクトの一般的なアプリケーション シナリオを理解し、HTTP 301 ステータス コードを理解する Web ページのリダイレクトの一般的なアプリケーション シナリオを理解し、HTTP 301 ステータス コードを理解する Feb 18, 2024 pm 08:41 PM

HTTP 301 ステータス コードの意味を理解する: Web ページ リダイレクトの一般的なアプリケーション シナリオ インターネットの急速な発展に伴い、Web ページの操作に対する人々の要求はますます高くなっています。 Web デザインの分野では、Web ページのリダイレクトは一般的かつ重要なテクノロジであり、HTTP 301 ステータス コードによって実装されます。この記事では、HTTP 301 ステータス コードの意味と、Web ページ リダイレクトにおける一般的なアプリケーション シナリオについて説明します。 HTTP301 ステータス コードは、永続的なリダイレクト (PermanentRedirect) を指します。サーバーがクライアントのメッセージを受信すると、

ナビの地図にある横8の字は何ですか? ナビの地図にある横8の字は何ですか? Jun 27, 2023 am 11:43 AM

ナビゲーション マップ上の水平の数字 8 は霧を意味し、中程度は黄色の 8 警告信号、重度はオレンジ 8 の警告信号を意味します。

百度地図アプリ最新バージョン18.8.0リリース、信号機レーダー機能を初導入、リアルタイム駐車推奨機能を追加 百度地図アプリ最新バージョン18.8.0リリース、信号機レーダー機能を初導入、リアルタイム駐車推奨機能を追加 Aug 06, 2023 pm 06:05 PM

Android 版と iOS 版の百度地図アプリは、業界に先駆けて信号機レーダー機能を初めて導入したバージョン 18.8.0 をリリースしました。公式の紹介によると、信号機レーダーをオンにした後、自動検出をサポートします目的地を入力することなく、運転中に信号機の位置を確認できます。北斗高精度はリアルタイムで位置を測ることができます。全国の 100 万台以上の信号機で、自動的に青信号リマインダーがトリガーされます。さらに、この新機能は完全なサイレントナビゲーションも提供し、地図エリアがより簡潔になり、重要な情報が一目で明確になり、音声ブロードキャストがないため、ドライバーは運転にさらに集中できるようになります。 2020年10月 リアルタイムカウントダウン予測に対応 信号交差点に近づくとナビが自動的にカウントダウンの残り秒数を表示し、常に前方の道路状況を把握できるようになりました。 2022 年 12 月 31 日までの信号カウントダウン

PHP でのリダイレクト チュートリアル PHP でのリダイレクト チュートリアル Sep 01, 2023 pm 05:53 PM

リダイレクトを使用すると、クライアント ブラウザを別の URL にリダイレクトできます。ドメインの切り替え、Web サイトの構造の変更、または HTTPS への切り替え時に使用できます。この記事では、PHPを使用して別のページにリダイレクトする方法を紹介します。 PHP リダイレクトがどのように機能するかを正確に説明し、舞台裏で何が起こっているかを示します。無料のオンライン コースで PHP を学習する PHP を学習したい場合は、PHP の基礎の無料オンライン コースをチェックしてください。 PHP の基礎 Jeremy McPeak 2021 年 10 月 29 日 基本的なリダイレクトはどのように機能しますか? PHP リダイレクトの詳細に入る前に、HTTP リダイレクトが実際にどのように機能するかを簡単に見てみましょう。下の写真を見てください。上の画面を理解しましょう

Internet Explorer で Edge が開く: MS Edge リダイレクトを停止する方法 Internet Explorer で Edge が開く: MS Edge リダイレクトを停止する方法 Apr 14, 2023 pm 06:13 PM

Internet Explorer が長い間人気がなくなってきたことは周知の事実ですが、Windows 11 の登場により現実が始まりました。 Edge は、将来的に IE を置き換えるのではなく、現在 Microsoft の最新オペレーティング システムのデフォルトのブラウザーとなっています。現時点では、引き続き Windows 11 で Internet Explorer を有効にすることができます。ただし、IE11 (最新バージョン) の正式な廃止日は 2022 年 6 月 15 日であり、時間は刻々と過ぎています。これを念頭に置くと、Internet Explorer が Edge を開くことがありますが、それが気に入らないことに気づいたかもしれません。では、なぜこのようなことが起こっているのでしょうか?存在する

フットボール ナビゲーション音声パッケージはどのナビゲーション ソフトウェアに含まれていますか? フットボール ナビゲーション音声パッケージはどのナビゲーション ソフトウェアに含まれていますか? Nov 09, 2022 pm 04:33 PM

「Amap Navigation」ソフトウェアのサッカーナビゲーション音声パッケージは、自動車版Amapマップのナビゲーション音声パッケージの1つで、コンテンツは黄建祥選手のサッカー解説バージョンのナビゲーション音声です。設定方法: 1. Amap ソフトウェアを開きます; 2. クリックして「その他のツール」-「ナビゲーション音声」オプションに入ります; 3. 「Huang Jianxiang Passionate Voice」を見つけて「ダウンロード」をクリックします; 4. ポップアップページでをクリックし、「音声のみを使用する」をクリックします。

PHPでのリダイレクト PHPでのリダイレクト May 24, 2023 am 08:25 AM

リダイレクトは Web 開発でよく使用される手法で、ユーザーを現在の URL アドレスから別の URL アドレスにリダイレクトできます。 PHP では、リダイレクトは header() 関数を通じて実装されます。 header() 関数は、リダイレクト情報を含む HTTP ヘッダー情報を出力できます。以下に示すように、header() 関数を使用してユーザーを別の URL アドレスにリダイレクトできます。 header("Location:http://www.exam

See all articles