Vueは新しいウィンドウを開き、パラメータ転送のグラフィック例を実装します。

Vueは新しいウィンドウを開き、パラメータ転送のグラフィック例を実装します。

私が実現したい機能は、新しいウィンドウを開いて新しいページを表示することですが、パラメータを渡す必要があり、パラメータをアドレスバーに表示することはできません。さらに、ページを更新しても、渡されたパラメータは失われず、新しいウィンドウ、つまりブラウザタブを手動で閉じない限り、常に存在する必要があります。

Baidu のプログラミングを通じて、オンライン コンテンツではこの効果はまったく得られず、落とし穴があることが分かりました。明らかに実現不可能ですが、あたかも事実であるかのように書かれています。そのため、タイトルに「画像があり、真実がある」とわざと付け加えました。私はあなたを騙しているわけではありません。その機能を実現できないのであれば、人を騙すために出てこないでください。

まずは私が作成したコードを書き出し、その後、他の人が実装できない落とし穴や、この点で注意する必要がある点を紹介します。

新しいウィンドウを開いてコードを渡す

//新しいウィンドウを開いてパラメータを渡します。パラメータはアドレスバーに表示できません。ウィンドウが閉じられていない場合は継続的に更新されます。パラメータは常に有効です。handleWindow() {
 //主に新しいウィンドウを開く機能を実現する var route = this.$router.resolve({
 名前: 'Xterm',
 })
 //主にパラメータを保存する機能を実装します sessionStorage.setItem("ip", "1.1.1.1");
 
 window.open(route.href, '_blank')
}

私のルーティング構成も掲載されています。

{
 パス: '/xterm',
 非表示: true、
 コンポーネント: () => import('@/views/monitor/xterm/index'),
 名前: 'Xterm',
},

これでページはパラメータを受け取ります

//Vue 初期化メソッド。ページが初期化されたら、パラメータ created() を取得します。{
 アラート(sessionStorage.getItem("ip"));
 this.ip = sessionStorage.getItem("ip")
},

真実の写真を投稿する

これは、vue を通じて新しいウィンドウを開き、sessionStorage を通じてパラメータを渡すことによって行われます。なぜこの機能を実現するにはこの方法しか使えないのでしょうか? 落とし穴に足を踏み入れた私の体験をお話ししましょう。インターネット上で偽のコードを使って人を騙す悪人もいます。そのようなテストに耐えられないプログラマーはいるでしょうか?

まず、この機能は新しいウィンドウを開く必要があるため、それを実行するには 3 つの方法があります。

最初の方法: <router-link>タグを使用する。個人的には、このタグの書き方は好きではありません。単純なビジネス シナリオではかろうじて問題ありませんが、多くのビジネスと多くのパラメーターを処理する必要があります。このタグの書き方は、ビジネスの拡大には役立ちません。直接排除、OUT!

2 番目の方法: router.replaceメソッドを使用する。このメソッドはウィンドウを開き、現在の A ページをジャンプ先の B ページに置き換えます。新しいウィンドウを開いて新しいものを表示すると、前のページがすぐに消えてしまいます。これはおかしくありませんか?実験後、OUT!

3 番目の方法: router.resolveメソッドを使用して、現在の A ページに影響を与えずに新しいウィンドウを開き、ブラウザ タブを直接開きます。タブを切り替えて、2 つのページの情報データを表示できます。これはいいですね、気に入りました、これです。

ちなみに、vue2.0以降、普及が進むHTML5との整合性を保つため、router.goとrouter.pushは新しいウィンドウを開く属性をサポートしなくなりました。router.goは進むと戻るとして使用され、router.pushは特定のページへのガイドとして使用されます。このジャンプでは新しいウィンドウは開きませんが、履歴機能があります。1つのウィンドウに複数のタブがある場合は、図に示すようにこれを使用して複数のタブを開くことができます。

さて、router.resolve を使用すると、新しいウィンドウにジャンプできるので、パラメータを渡し始めますが、ここが難しいところです。オンライン転送によると、パラメータ転送には主に 2 つの種類があります。

//最初のパラメータをテストする testA (aaa) {
 const ルート = this.$router.resolve({
   名前: 'Xterm', 
   パラメータ: {
     ip:aaa
   }
 })
 window.open(route.href,'_blank')
}

//2番目のパラメータをテストする testA (bbb) {
 const ルート = this.$router.resolve({
   パス: '/xterm', 
   クエリ: {
     IP: bbb
   }
 })
 window.open(route.href,'_blank')
}

対応する受信パラメータは次のとおりです。

作成された() {
 //最初のアクセスパラメータをテストします this.ip = this.$route.params.ip
 // 2 番目のアクセス パラメータをテストします this.ip = this.$route.query.ip
},

テストの結果、最初のタイプでは値を取得できないのに対し、2 番目のタイプでは渡されたパラメータの値がアドレス バーに公開されます。最初の方法では、あらゆる種類の特別な処理を実行しても、最良の結果は最初の値のみを取得することです。ページを再度更新すると、値は失われます。なぜこのようなことが起こるのでしょうか?ユーザーが行き詰まりを感じて更新ボタンをクリックしないことを誰が保証できるでしょうか? router.pushでパラメータを渡すことに全く問題はありません。すべてのパラメータを受け取ることができます。違いは、name+params の組み合わせの場合、パラメータはアドレスバーに表示されず、更新後にデータが消えてしまうことです。path+query の組み合わせの場合、パラメータはアドレスバーに表示され、ページをどのように更新しても値はそこに残ります。プッシュで試してみたら、解決方法も同じだろうと自然に思ったのでしょう。アドレスバーでパラメータを渡さずに最初の方法を使うと絶対に成功しないというブログをたくさん見てきましたが、クリック数は依然として非常に多く、泣きたいのに涙が出ません。

自分でやるしかありませんでした。キャッシュを探して、localStorage と sessionStorage プロパティを見つけました。SessionStorage はデータを一時的に保存するために使用され、ウィンドウまたはタブを閉じると削除されます。localStorage は、Web サイト全体のデータを永続的に保存するために使用されます。保存されたデータには、手動で削除されるまで有効期限はありません。明らかに、sessionStorage で十分です。

これら 2 つの属性をサポートするブラウザのバージョンは次のとおりです。

この時点で、問題は実際に解決しました。実際、複雑ではありません。インターネット上の回答の質がまちまちなだけです。他の人が使用できるように記録しておきます。

要約する

これで、Vue で新しいウィンドウを開いてパラメータを渡す方法についての記事は終了です。Vue で新しいウィンドウを開いてパラメータを渡す方法についての関連記事は、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • electron+vue は div コンテンツ編集可能なスクリーンショット機能を実現します
  • vue3.0 でカルーセル コンポーネントをカプセル化する手順
  • Vue は、デスクトップから Web ページにファイルをドラッグするためのサンプル コードを実装します (画像/オーディオ/ビデオを表示できます)
  • Vue の基本的な手順の例のグラフィック説明
  • Vue は Ctrip のカルーセル効果を模倣します (スライディング カルーセル、以下は高度に適応)
  • vue+echarts で中国地図のフロー効果を実現する (詳細な手順)
  • vue3 を使用したジグソーパズルゲームのリファクタリングの例
  • Vue で棒グラフを使用し、自分で設定を変更する方法
  • Vueは不規則なスクリーンショットを実装する

<<:  MySQL 5.7.18 winx64 のインストールと設定方法のグラフィックチュートリアル

>>:  win10 64 ビット システムに複数の JDK バージョンをインストールする際の切り替え問題と解決策の概要

推薦する

Docker を使用して開発環境を構築する方法 (Windows および Mac)

目次1. Dockerを使用する利点2. Dockerをインストールする1) LinuxにDocke...

MySQL におけるデフォルトの使用法の詳細な説明

NULL および NOT NULL 修飾子、DEFAULT 修飾子、AUTO_INCREMENT 修...

MySQL 8.0.20 のインストールと設定方法のグラフィックチュートリアル

MySQLのダウンロードとインストール(バージョン8.0.20)のチュートリアルは参考までに、具体的...

Tomcat CentOS インストールプロセス図

Tomcat CentOS インストールこのインストール チュートリアルでは、次の内容について説明し...

レスポンシブデザインについて知っておくべきこと

レスポンシブデザインとは、ウェブサイトの開発プロセス中に、ユーザーの操作やデバイス環境に応じて対応す...

Vue-cli4 ルーティング構成の詳細な理解

目次序文 - Vue ルーティング1. 最も基本的なルーティング構成1. router/index....

VueでJSXを使用する方法

JSXとは何かJSX は Javascript の構文拡張であり、JSX = Javascript ...

HTML ページはダーク モードの実装をサポートします

2019年から、AndroidとiOSの両方のプラットフォームでダークモードが使用され始めました。も...

MySql Group Byは複数のフィールドのグループ化を実装します

日常の開発タスクでは、データ テーブル内のグループ化フィールドに基づいて統計データを取得するために、...

Docker に MySQL と MariaDB をインストールする方法

MySQLとMariaDBの関係MariaDB データベース管理システムは MySQL のブランチで...

CSS ポインターイベント属性の使用に関する詳細な説明

フロントエンド開発では、ユーザーと直接やり取りするため、ユーザーが操作がスムーズで快適だと感じ、ネイ...

antd ツリーと親子コンポーネント間の値転送問題について (React のまとめ)

プロジェクト要件: 製品ツリー ノードをクリックすると、そのノードのすべての親ノードが取得され、表に...

mysql5.7.14 解凍版インストールグラフィックチュートリアル

MySQL は、コミュニティ エディション (コミュニティ サーバー) とエンタープライズ エディシ...

ネイティブWeChatアプレット開発におけるreduxの使用の詳細な説明

前提複雑なシナリオでは、複数の異なるページ間で大量のデータを使用したり変更したりする必要があります。...

MySQLの始め方から諦め方まで徹底解説 - インストール

学ぶ内容1. ソフトウェアのインストールとサーバーの設定。 2. (オプションですが、強くお勧めしま...