Vue の this.$router と this.$route の違いと push() メソッド

Vue の this.$router と this.$route の違いと push() メソッド

公式文書には次のように記されている。

ルーターを挿入することで、どのコンポーネントでも this.$router を通じてルーターにアクセスでき、また this.$route を通じて現在のルートにアクセスすることもできます。

それは次のように理解できます。

this.$router は、多くのプロパティとオブジェクト (履歴オブジェクトなど) を含むグローバル ルーター オブジェクトと同等です。どのページでも、push()、replace()、go() などのメソッドを呼び出すことができます。

this.$route は現在のルート オブジェクトを表します。各ルートにはルート オブジェクトがあり、これは対応する名前、パス、パラメータ、クエリ、その他の属性を取得できるローカル オブジェクトです。

push() メソッドについて:

別の URL に移動するには、router.push メソッドを使用します。このメソッドは履歴スタックに新しいレコードを追加するため、ユーザーがブラウザの戻るボタンをクリックすると、前の URL に戻ります。

<router-link> をクリックすると、このメソッドが内部的に呼び出されるため、<router-link :to="..."> をクリックすると router.push(...) を呼び出すのと同じになります。

push() メソッド呼び出し:

    // 文字列 this.$router.push('home')
 
    //オブジェクト this.$router.push({path:'home'})
 
    //名前付きルート this.$router.push({name:'user', params:{userId: '123'}})
 
    //クエリパラメータを使用すると、/register?plan=private になります。
    this.$router.push({path:'register', query:{plan:private}})

注: パスが指定されている場合、パラメータは無視されますが、上記の例のクエリの場合はそうではありません。代わりに、ルート名を指定するか、次の例に示すようにパラメータ付きの完全パスを記述する必要があります。

    定数ユーザーID = '123';
 
    this.$router.push({path:`/user/${userId}`}); //->/user/123
 
    this.$router.push({name:'user', params:{userId}}); //->/user/123
 
    //ここでのパラメータは無効です this.$router.push({path:'/user', params:{userId}}); //->/user

同じルールが router-link コンポーネントの to プロパティにも適用されます。

要約:

params はパラメータを渡すために使用されます。push では、params はルートを導入するために name のみを使用できるため、path:'/xxx' ではなく name:'xxx' のみを使用できます。ここで path が記述されている場合、パラメータを受け取るページは未定義になります。

ルーティングパラメータの受け渡し方法:

1. 完全なパスを手書きします。

    this.$router.push({path: `/user/${userId}`});

パラメータを取得: this.$route.params.userId

2. パラメータを渡します:

    this.$router.push({name:'user', params:{userId: '123'}});

パラメータを取得: this.$route.params.userId

URL 形式: パラメータなしの URL、http:localhost:8080/#/user

3. クエリを使用して以下を渡します。

    this.$router.push({path:'/user', query:{userId: '123'}});

パラメータを取得: this.$route.query.userId

URL 形式: パラメータ付き URL、http:localhost:8080/#/user?userId=123

簡単に言うと、query は get リクエストに相当し、ページがジャンプしたときにアドレスバーにリクエストパラメータが表示されます。params は post リクエストに相当し、パラメータはアドレスバーに表示されません。

/ で始まるネストされたパスはルート パスとして扱われることに注意してください。 これにより、ネストされたパスを設定しなくても、ネストされたコンポーネントを活用できるようになります。

要約する

これで、Vue の this.$router と this.$route の違いと push() メソッドについての説明は終了です。Vue の this.$router と this.$route の違いについてさらに詳しく知りたい方は、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続きご覧ください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • vue.jsのthis.$router.pushが無効である問題を解決する
  • vue3.0 で this.$router.replace({ path: ''/''}) が更新されても効果がない問題について
  • Vue で this.$router.push のパラメータを取得する方法
  • Vue.js this.$router.push は params パラメータを取得できません
  • Vue this.$router.push(parameter) はページジャンプ操作を実装します

<<:  Linuxはscpコマンドを使用してファイルをローカルコンピュータにコピーし、ローカルファイルをリモートサーバーにコピーします。

>>:  mysql8.0.0 winx64.zip 解凍バージョンのインストールと設定のチュートリアル

推薦する

Vueで配列の変更を監視する方法

目次序文ソースコード学習の第一歩はどこから始めればよいでしょうか?写真から始めましょうソースコードを...

初心者向けウェブサイト構築チュートリアルの概要

これら 6 つの記事を書いた後、私は少し混乱し始めました。次にどこに書けばいいのか分かりません。ドメ...

JS でタブ効果を書く

この記事の例では、タブ効果を記述するためのJSの具体的なコードを参考までに共有しています。具体的な内...

Reactソースコードにおけるビット演算について詳しく説明します

目次序文いくつかの一般的なビット操作ビットAND (&)ビットOR (|)ビット否定(~)マ...

CSS でテキストシャドウと要素シャドウ効果を使用する

テキストシャドウの紹介CSSでは、 text-shadowプロパティを使用してテキストの影を設定しま...

crontab スケジュールされたタスクが実行されない理由の分析と解決

序文Linux のスケジュールされたタスクを実装する方法としては、cron、anacron、at な...

geo モジュールを使用して Nginx でホワイトリストを設定する例

元の構成: http { ...... limit_conn_zone $binary_remote...

IE ラベル LI テキスト折り返し問題について

私は長い間この問題に悩まされていましたが、検索してみたところ、実際にこの問題を解決した人がいることが...

Linux でファイルの種類を理解して識別する方法

序文ご存知のとおり、Linux ではハードディスクやグラフィック カードなどすべてがファイルです。 ...

HTML5+CSS3 ヘッダー作成例と更新

前回、私たちは 2 つのヘッダー レイアウト (フレックスボックス 1 つとフロート 1 つ) を考...

Docker コンテナのログを表示およびクリーンアップする方法 (テスト済みで効果的)

1. 問題Docker コンテナのログにより、ホストのディスク領域がいっぱいになりました。 doc...

WeChat アプレットのシンプルなログイン ページの実装 (ソース コード付き)

目次1. 上の写真2. ユーザーが存在しない3. コードをアップロードする1. 上の写真 2. ユー...

Hadoop を使用せずに Linux 環境に Spark のスタンドアロン バージョンをインストールする方法

ビッグデータはますます注目を集めており、ビッグデータのいくつかの構成要素に精通していないと、自慢でき...

詳細なアイデアを備えたシンプルな計算機の HTML 実装

コードをコピーコードは次のとおりです。 <!DOCTYPE html> <html...

Vue で配列パラメータを渡すための get / delete メソッド

フロントエンドとバックエンドがやり取りする場合、get または delete を介してバックエンドに...