Vue ルーティングフォールバックに最適なソリューション (vue-route-manager)

Vue ルーティングフォールバックに最適なソリューション (vue-route-manager)

ルーティングマネージャー

各ジャンプのvue-route名を記録し、フォールバックを処理するための組み込みメソッドを備えているため、指定されたページに簡単にフォールバックできます。

背景

著者が開発したプロジェクトでは、さまざまな派手なジャンプによく遭遇します。たとえば、ガイドページでの選択操作から最終的な提出とレビューまで、途中に無数のページがあり、途中の操作が異なっていても、最終的なロールバックの深さが異なります。

プロジェクトの出発点が選択ページであり、最終的に提出ページに到達し、元のページ(選択ページ)に戻ると仮定します

ページを選択 --> B --> C --> ページを送信
ケース1: 選択から送信まで、BとCを経由します。この時点で、Aに戻るにはrouter.go(-3)を呼び出す必要があります。
----------------------------------------

ページを選択 --> B-1 ------> ページを送信
ケース2では、選択から送信までB-1のみが発生します。この時点で、go(-3)は適用されなくなります。このとき、2番目のケースを区別するためにクエリパラメータ(チャネルID)が追加されることがあります。
----------------------------------------

ページを選択 --> B-2 --> C-2 --> C-2-1 --> ページを送信
この場合、go(-3) は適用できないだけでなく、クエリ パラメータに追加の型が必要です。後でさらに多くのチャネルを区別する必要がある場合は、次のように考えることができます...

現時点では、RouteManagerプラグインを使用して、一連の複雑な問題を処理できます。

はじめる

 npm i vue-route-manager -S
 'vue' から Vue をインポートします
 ​
 // ルートマネージャをインポートします import VueRouteManager from 'vue-route-manager'
 ​
 // Vue にマウントします Vue.use(VueRouteManager, { /* ...ManagerOptions */ })
 ​
 // ページのこの時点では、this.$RouteManager を使用してマネージャーにアクセスできます。

ManagerOptions パラメータ

パラメータ名タイプしなければならない説明する
ルーターVueルーターはいVueRouter オブジェクト
デバッグブールいいえデバッグを有効にするかどうか

ホームページ

ルート情報 { パス: '/home'、名前: 'home'、コンポーネント: Home }

 <テンプレート>
  <button @click="jump">次のページ</button>
 </テンプレート>
 <スクリプト>
 エクスポートデフォルト{
    メソッド: {
       ジャンプ(){
          //ホームページの名前を記録する
          this.$RouteManager.setHome('home')
          this.$router.push({ name: 'page-1' })
      }
    }
 }
 </スクリプト>

ページ-1 ページ

ルーティング情報 { パス: '/page_1'、名前: 'page-1'、コンポーネント: Page-1 }

 <テンプレート>
  <div class="page-1">
  ページ1
  <button @click="$router.push({ name: 'page-2' })">次のページ</button>
  <button @click="$router.replace({ name: 'page-1' })">リダイレクト</button>
  </div>
 </テンプレート>

ページ2

ルート情報 { パス: '/page_2'、名前: 'page-2'、コンポーネント: Page-2 }

 <テンプレート>
  <div class="page-2">
  ページ2
  <button @click="$router.push({ name: 'page-3' })">次のページ</button>
  <button @click="backToHome">ホームに戻る</button>
  </div>
 </テンプレート>
 <スクリプト>
 エクスポートデフォルト{
    メソッド: {
       ホームに戻る(){
          // 最初のレコードのホームページに戻るには backHome を呼び出します this.$RouteManager.backHome()
      }
    }
 }
 </スクリプト>

ページ3ページ

ルーティング情報 { パス: '/page_3'、名前: 'page-3'、コンポーネント: Page-3 }

 <テンプレート>
   <div class="page-3">
    ページ3
     <button @click="$backToHome">ホームに戻る</button>
     <button @click="backToPage">ページ 1 に戻る</button>
   </div>
 </テンプレート>
 エクスポートデフォルト{
    メソッド: {
      ページに戻る(){
          // 指定されたページに戻るには backByName を呼び出します (このページを通過している必要があります)
          this.$RouteManager.backByName('page-1')
      },
  ホームに戻る(){
          // 最初のレコードのホームページに戻るには backHome を呼び出します this.$RouteManager.backHome()
      }
    }
 }
 </スクリプト>

問題を解決する

A --> B --> C --> D -- 戻る -> A // ケース 1
|--> B-1 ------> D --Return-> A // ケース 2
|--> B-2 --> C-2 -->C-2-1 --> D --戻る-> A // ケース 3

まず、ページAでthis.$RouteManager.setHome('page-A')またはthis.$RouteManager.setHome()を呼び出します。

次にページ B に戻る必要がある場合は、これを呼び出します。$RouteManager.backHome()

方法

setHome([名前])

  • 名前
    • タイプ: 文字列
    • name はルートリスト内の名前を参照します { path: '/page_3', name: 'page-3', component: Page-3 }
    • デフォルト: 現在のルートの名前

最終的に返される必要があるページルート名を設定します

戻るホーム()

ホームページに戻り、setHomeでホームページを設定します。

backByName(名前)

  • 名前
    • タイプ: 文字列
    • name はルートリスト内の名前を参照します { path: '/page_3', name: 'page-3', component: Page-3 }

指定した名前のページに戻る

要約する

これで、Vue ルーティング フォールバックに最適なソリューションである vue-route-manager に関するこの記事は終了です。Vue ルーティング フォールバックに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • vueでは、前のステップに戻ることは禁止されており、ルートは履歴を保存しません。

<<:  nginx がドメイン名アクセス用に設定されている場合にドメイン名の後に 2 つのスラッシュ // が表示される問題の解決方法

>>:  MySQL パーティションテーブルのベストプラクティスガイド

推薦する

JS+Canvas が抽選ホイールを引く

この記事では、宝くじターンテーブルを描画するJS + Canvasの具体的なコードを参考までに共有し...

HTML の 2 つのタブ ナビゲーション間の競合の解決方法

まず問題の説明から始めましょう:同じページで、1 つのタブに float:left が必要で、もう ...

MySQL における varchar 型と char 型の違い

目次前述のVARCHAR型VARCHAR適用可能な状況CHAR型テストVARCHAR(5)とVARC...

ウェブサイトをIE6、7、8、9の古いバージョンに対応させるための3つのソリューション

Microsoft は後からブラウザの研究開発に力を入れてきましたが、実際のところ、最新の IE ブ...

MySQL 8.0 ウィンドウ関数の紹介と概要

序文MySQL 8.0 より前は、Oracle、SQL SERVER、PostgreSQL などの他...

JavaScript によるダイナミッククリスマスツリーの詳細な説明

目次1. CSS のみを使用して作成したアニメーションのクリスマスツリー2. CSS のみを使用して...

.NETCore Dockerはコンテナ化とプライベートイメージリポジトリ管理を実装します

1. Dockerの紹介Docker は Linux オペレーティングシステムの一部の機能をベースに...

MySQL で特殊文字を含むデータベース名を作成する方法の例

序文この記事では、MySQL で特殊文字を使用してデータベース名を作成する方法について説明します。こ...

VUE のコンパイル スコープとスロット スコープのスロットの問題について

スロットとは何ですか?スロット ディレクティブは v-slot であり、現在 slot と slot...

MySQL 5.7 のインストールと設定のチュートリアル

この記事では、参考までにMySQLのインストールと設定のチュートリアルを紹介します。具体的な内容は次...

MySQL ツリー構造データベース テーブル設計

目次序文1. 基本データ2. 継承駆動設計3. 左右の値のエンコーディングに基づく設計4. ツリー構...

JavaScript が Xiaomi のカルーセル効果を模倣

この記事は、透明度を変えてカルーセルにするXiaomiカルーセルを真似て書いたものです。初心者なので...

ソースコード分析からTomcatがサーブレットの初期化を呼び出す方法の詳細な説明

目次導入1. Tomcatを起動するコード2. Tomcatフレームワーク3. コンテナを作成する ...

Gokudōゲームにおけるフロントエンド知識のまとめ

背景日本語を学び始めた当初は、日本語の50音を覚えるのは簡単ではなく、特にカタカナを覚えるのは困難で...

Dockerカスタムネットワークコンテナ相互接続

目次序文-リンクカスタムネットワーク質問する序文前回は、 -Linkパラメータを使用してコンテナ間の...