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 バージョンをインストールする際の切り替え問題と解決策の概要

推薦する

bash のスクリプトデバッグメカニズムの詳細な説明

スクリプトをデバッグモードで実行するbash -x <script> を使用すると、スク...

VueはPCカメラを呼び出して写真機能を実現します

この記事の例では、VueがPCカメラを呼び出して写真機能を実現する具体的なコードを参考までに共有して...

jsは前のページに戻り、コードを更新します

1. Javascript は前のページ history.go(-1) に戻り、2 つのページを返し...

WeChatミニプログラムページとコンポーネント間の情報伝達と機能呼び出し

今回は、私自身の開発経験を踏まえて、以下の観点で関連内容を解説します。ページからコンポーネントにデー...

MySQL 8.0.12 winx64 詳細なインストールチュートリアル

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

テキストまたはJSONを返すようにnginxを設定する方法

特定のインターフェースをリクエストするときに、指定されたテキスト文字列または JSON 文字列を返す...

Rx レスポンシブプログラミングについての簡単な説明

目次1. 観察可能2. 高階関数3. エクスプレスボックスモデル3.1. エクスプレスボックスモデル...

ウェブサイトのデザイン体験のための7つの異なるカラースキーム

ウェブサイト構築におけるカラーマッチングは非常に特殊であり、ウェブサイトのテーマ、感情、雰囲気などの...

CSS 画像アニメーション効果のサンプルコード(フォトフレーム)

この記事では、CSS 画像アニメーション効果(フォトフレーム)のサンプルコードを紹介し、皆さんと共有...

Linux で Xfce デスクトップ環境を使用すべき 8 つの理由

いくつかの理由(好奇心も含む)から、数週間前に Linux デスクトップとして Xfce を使い始め...

Linuxでホスト名を変更する方法

1. 現在のホスト名を表示する [root@fangjian ~]# ホスト名ctl 静的ホスト名:...

ブラウザでTIF形式の画像を表示する方法

ブラウザはTIF形式の画像を表示しますコードをコピーコードは次のとおりです。 <html>...

CSS3 で z-index が効かない問題の解決方法

最近、CSS3 と js の組み合わせを作成したのですが、z-index が有効にならないケースが多...

CSS スタイルを変更してグレーの Web ページ (色なし、明るい白黒のみ) を実現するいくつかの方法

通常、清明節、国哀悼日、大地震の日、影響力のある偉人の死去または命日には、ウェブマスターとして、故人...

Windows で MySQL 5.6 を 5.7 にアップグレードする方法

前面に書かれたMySQL をアップグレードする方法には、インプレース アップグレードと論理アップグレ...