概要一般的なシナリオ: リストの詳細をクリックして詳細ページに移動し、渡されたパラメータに基づいて内部ページで詳細データを取得します。 ルートパラメータを渡す方法は一般的にいくつかあります。以下では主にプログラムナビゲーション router.push のパラメータ渡しの方法を紹介します。 方法1: params経由でパラメータを渡すルーティング構成は次のとおりです。 { path: '/detail/:id', // id の後に ? が続く場合、このパラメータはオプションであることを意味します name: 'detail', コンポーネント: 詳細 } $router.pushのパスパラメータを使用する // リスト内のパラメータを渡す goDetail(row) { this.$router.push({ パス: `/detail/${row.id}` }) } // 詳細ページでパラメータ this.$route.params.id を取得します $router.pushのparamsを通じてパラメータを渡す // リストページパラメータ goDetail(row) { this.$router.push({ 名前: '詳細', パラメータ: { id: 行.id } }) } // 詳細ページで this.$route.params.id を取得します 注: このパラメータ渡し方法では、パスは名前を使用し、パスは名前を使用し、パスは名前を使用します。パスが使用されている場合、パスは取得されません。ルーティング構成に /:id、つまり path: 'detail' が追加されていない場合、ID は URL に表示されません。詳細ページでパラメータ ID を取得することはできますが、更新後にパラメータは失われます。 上記の 2 つの方法では、渡されたパラメータ ID が、図に示すように URL の後に表示されます。 渡されたパラメータは URL で公開されます。 ルートに params パラメータ /:id が設定されているが、ジャンプ時にパラメータが渡されない場合、ページにコンテンツがないか、ジャンプが失敗します。最後に追加できますか?このパラメータがオプションであることを示します (例: /:id?) 方法2: クエリを通じてパラメータを渡す//ルート設定{ パス: '/detail', 名前: '詳細', コンポーネント: 詳細 } // リストページ goDetail(row) { this.$router.push({ パス: '/detail', クエリ: { id: 行.id } }) } //詳細ページ this.$route.query.id 注: この方法で渡されたパラメータは、アドレス バーの URL の後に表示されます。id =?、get パラメータの渡し方と同様です。パラメータを渡すには、パスとともにクエリを使用する必要があります。 渡されたパラメータはオブジェクトまたは配列です また、クエリ経由でオブジェクトや配列を渡すと、アドレスバーで強制的に[object オブジェクト]に変換されてしまい、更新後にオブジェクト値が取得できなくなります。 このとき、JSON.stringify() メソッドを使用して、渡すパラメータを文字列に変換し、JSON.parse() を使用して詳細ページのオブジェクトに変換することができます。 parObj = JSON.stringify(obj) とします。 this.$router.push({ パス: '/detail', クエリ: { 'obj': パーオブジェクト } }) //詳細ページ JSON.parse(this.$route.query.obj) この方法はオブジェクトを渡すこともできますが、データが小さい場合は問題ありませんが、データが大きい場合はアドレスバーが非常に長くなります。 注: すべてのサブコンポーネントでは、ルートパラメータは$routerではなく$routeによって取得されます。 上記のパラメータとクエリパラメータの受け渡し方法の比較:
方法3: propsを使用してコンポーネントルートを分離する//ルート設定{ パス: '/detail/:id', 名前: '詳細', コンポーネント: 詳細、 props: true // props が true に設定されている場合、$route.params はコンポーネントのプロパティとして設定されます} // リストページ goDetail(row) { this.$router.push({ パス: '/detail', クエリ: { id: 行.id } }) } //詳細ページのエクスポートデフォルト{ 小道具: { // ルートで渡されたパラメータ id をコンポーネント id: String の props プロパティに分離します。 }, マウント: { コンソールログ(このID) } } また、パラメータを sessionStorage または localStorage に保存することで、ページ更新パラメータの損失の問題を解決することもできます。詳細については、実際のプロジェクトを参照してください。 以上がvueルータールーティングのページ更新時にパラメータが失われる場合の対処方法の詳細です。vueの詳細については、123WORDPRESS.COMの他の関連記事にも注目してください! 以下もご興味があるかもしれません:
|
<<: MySQLインストーラがコミュニティモードで実行されている場合の解決策
nginx を使用して 1 つのサーバーに複数のフロントエンド プロジェクトをデプロイする 3 つの...
Mysqlが2つのテーブルを関連付けると、次のエラーメッセージが生成されます:照合順序の不正な組み合...
MongoDBインストールYumを使用してインストールすることを選択する1. repoファイルを作成...
デフォルトでは、ラベルとスパンの幅の設定は無効です。一般的に、表示属性は必須ですコードをコピーコード...
目次1. 優先キューの紹介2. 優先キューのカプセル化1. 優先キューの紹介通常のキューに要素が挿入...
序文: Vue3 がリリースされてからかなり経ちますが、最近、会社のプロジェクトでVue3 + Ty...
1. サーバーにDockerをインストールする yumでdockerをインストール設定ファイルを変更...
MySQL の内部関数instrを使用すると、従来の like クエリ メソッドを置き換えることがで...
目次1. はじめに1.1 Babel トランスコーダ1.2 ポリフィル2. let と const ...
Baidu の擬似静的の説明を引用します。擬似静的は、実際の静的に相対的です。通常、検索エンジンの使...
Mysqlデータベーステーブルの定期的なバックアップの実装0. 背景実際の開発環境では、フロントエン...
Linux CentOS 7.7 システムを Vmware にインストールする方法。最小限のインスト...
目次1. JavaScript がシングルスレッドなのはなぜですか? 2. タスクキュー3. イベン...
目次Dockerカスタムネットワーク1. カスタムネットワークの紹介2. カスタムネットワークを作成...
目次序文1. 問題の原因2. 解決策VueはelementUIテーブルtr thの高さと背景色を変更...