ホームページ ウェブフロントエンド jsチュートリアル vue-routerのルーティングパラメータが更新・消失する問題の解決方法を詳しく解説

vue-routerのルーティングパラメータが更新・消失する問題の解決方法を詳しく解説

Jul 04, 2017 pm 03:04 PM
vue-router リフレッシュする 消える

この記事では、vue-routerルーティングパラメータが更新されて消える問題の解決策を主に紹介します。興味のある友人は参照してください

シナリオ: vue-routerで実装されたシングルページアプリケーション。ページがログインインターフェースを呼び出した後、サーバーはユーザー情報を返し、それがrouter.push({name: 'index', params: res.data})を通じてホームページコンポーネントに渡され、データが表示されます。ホームページで。しかし、ページを更新するとデータが消えてしまいました。

解決策:

1、セッション&サーバーレンダリング

従来の解決策は、ログインページとホームページが 2 つの別個のページであるというもので、ログインが成功した後、サーバーはそれに対応するセッションを生成します。次に、ホームページ データをレンダリングし、応答ヘッダーを通じてセッション ID をブラウザに渡し、対応する cookie ファイルを生成します。このようにして、次回ページがリクエストされると、ブラウザは http ヘッダーに対応する Cookie を取り込み、サーバーは Cookie 内のセッション ID に基づいてユーザーがログインしているかどうかを判断し、ユーザー データを表示します。 。
プロジェクトがフロントエンドとバックエンドの分離の考え方を採用しており、サーバーがインターフェイスのみを提供し、サーバー レンダリングを実行しない場合、この方法は機能しません。

2, $route.query

ルーティング時にログインリクエストパラメータを持ち込むことができます:

router.push({name:'index', query:{username: 'xxx', password: 'xxxxxx'}})
...
this.$ajax({
 url: 'xxx',
 method: 'post',
 data: {
  username: this.$route.query.username,
  password: this.$route.query.password
 }
})
ログイン後にコピー

このようにして、ログインパラメータは次のように URL に保存されます: "http:// xxx .xxx.xxx/index?username=xxx&password=xxxxxx" と入力し、作成したフックでログイン インターフェイスを呼び出してデータを返します。

たとえパスワードがmd5で暗号化されているとしても、ユーザー名やパスワードなどの機密情報をURLに含めるのは明らかに不合理です。

3. Cookie

別の方法は、Cookie にログインパラメータを保存し、作成されたフックで Cookie に保存されている情報を取得して、ログインインターフェイスを呼び出すことです。ユーザー名とパスワードを Cookie に保存することも不合理です。改良版では、ログインに成功するとサーバーがトークンを返し、有効期間内にそのトークンを介してユーザー データが取得されます。

Cookieデータへのアクセスはさらに面倒です。Cookie内のキーと値のペアは文字列であり、「=」でリンクされているため、Cookieを操作する追加のメソッドを記述する必要があります。

<script>
 function setCookie (name, value, exdays) {
  let date = new Date()
  date.setTime(date.getTime() + (exdays * 24 * 60 * 60 * 1000))
  let expires = "expires=" + date.toGMTString()
  document.cookie = name + "=" + value + "; " + expires
 }
 function getCookie (name) {
  name = name + "="
  let cookieArr = document.cookie.split(&#39;;&#39;)
  for (let i = 0; i < cookieArr.length; i++) {
   let cookie = cookieArr[i].trim()
   if (cookie.indexOf(name) === 0) {
    return cookie.slice(name.length)
   }
  }
  return ""
 }
ログイン後にコピー

4. HTML5 Web ストレージ

Web ストレージに関しては、多くのブラウザがそれをサポートしていないと無意識に考えざるを得ません。実際、IE8 以降は localStorage と sessionStorage をサポートしています。 Vue プロジェクトは少なくとも IE9 をサポートしているため、Web ストレージを安心して使用できます。

localStorage に保存されたデータには期限がなく、積極的に削除されない限り無効になりません。ページまたはブラウザを閉じると、SessionStorage は無効になります。これは、このシナリオに適しています。

トークン情報を sessionStorage に保存し、ページが更新されるたびにトークンを介してデータをリクエストすることもできますが、トークンはローカルに保存できるため、よく使用されるデータをローカルに直接保存してはどうでしょうか。ローカル データを利用すると、クライアント ネットワーク リクエストが減り、サーバーの負荷が軽減されます。

localStorage と sessionStorage は読み取り専用であるため、オブジェクトを直接指すことはできません。 Object.assign() を使用してオブジェクトをコピーすることはできません。値は文字列 "[object Object]" になるため、ループを通じて sessionStorage に属性を追加することしかできません。

...
for (var key in res.data.customer) {
 sessionStorage[key] = res.data.customer[key]
} 
...
ログイン後にコピー

上記は、私が最近の仕事で遭遇した問題です。最終的な解決策は、sessionStorage を使用してデータを保存することでした。

以上がvue-routerのルーティングパラメータが更新・消失する問題の解決方法を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

iPhone で Web ページを更新する 6 つの方法 iPhone で Web ページを更新する 6 つの方法 Feb 05, 2024 pm 02:00 PM

iPhone で Web を閲覧すると、ブラウザ アプリが開いている限り、読み込まれたコンテンツが一時的に保存されます。ただし、Web サイトはコンテンツを定期的に更新するため、古いデータを消去して最新の公開コンテンツを確認するには、ページを更新することが効果的な方法です。こうすることで、常に最新の情報と経験を得ることができます。 iPhone でページを更新したい場合は、次の投稿ですべての方法を説明します。 SafariでWebページを更新する方法【4つの方法】 iPhoneのSafariアプリで閲覧中のページを更新する方法はいくつかあります。方法 1: [更新] ボタンを使用する Safari で開いているページを更新する最も簡単な方法は、ブラウザのタブ バーにある [更新] オプションを使用することです。サファなら

Windows 11 で F5 更新キーが機能しない Windows 11 で F5 更新キーが機能しない Mar 14, 2024 pm 01:01 PM

Windows 11/10 PC では F5 キーが正しく機能しませんか? F5 キーは通常、デスクトップまたはエクスプローラーを更新したり、Web ページをリロードしたりするために使用されます。ただし、読者の中には、F5 キーがコンピュータを更新していて、正しく動作しないと報告している人もいます。 Windows 11 で F5 更新を有効にする方法は? Windows PC を更新するには、F5 キーを押すだけです。一部のラップトップまたはデスクトップでは、更新操作を完了するために Fn+F5 キーの組み合わせを押す必要がある場合があります。 F5 キーを押して更新しても機能しないのはなぜですか? F5 キーを押してもコンピューターを更新できない場合、または Windows 11/10 で問題が発生している場合は、ファンクション キーがロックされていることが原因である可能性があります。その他の考えられる原因には、キーボードまたは F5 キーが含まれます

Windows 10でデスクトップアイコンがすべて消える問題を解決する方法 Windows 10でデスクトップアイコンがすべて消える問題を解決する方法 Dec 25, 2023 pm 04:55 PM

朝起きてコンピュータの電源を入れたところ、コンピュータ上のデスクトップ アイコンがすべて消えていることに気づいたことがあるかどうかはわかりませんが、現時点ではパニックにならないでください。ショートカット キーによってアイコンが削除されている可能性があります。デスクトップアイコンを「ごみ箱」に直接復元することもできますが、そうでない場合は、アイコンを表示して復元する方法も確認できますので、以下で具体的な手順を見てみましょう。 Win10 デスクトップアイコンがすべて消えてしまった場合の回復方法 1. デスクトップにゴミ箱が 1 つだけ残っている場合は、顔を変更するためのショートカット キーをすべて削除した可能性があります。この時点で、ごみ箱をクリックして、それを削除するショートカットが見つかるかどうかを確認できます。 2. 削除したショートカットが表示されている場合は、すべてのショートカットを選択し、マウスを右クリックして [復元] を選択します。 3. マウスを右クリックして「削除の取り消し」をクリックすることもできます。だからすべて

Vue アプリケーションで vue-router エラー「NavigationDuplicated: 現在の場所への冗長なナビゲーションを回避しました」が発生しました。これを解決するにはどうすればよいですか? Vue アプリケーションで vue-router エラー「NavigationDuplicated: 現在の場所への冗長なナビゲーションを回避しました」が発生しました。これを解決するにはどうすればよいですか? Jun 24, 2023 pm 02:20 PM

Vue アプリケーションで vue-router エラー「NavigationDuplicated:Avoidedredundantnavigationtocurrentlocation」が発生しました – 解決方法は? Vue.js は、高速で柔軟な JavaScript フレームワークとして、フロントエンド アプリケーション開発でますます人気が高まっています。 VueRouter は、ルーティング管理に使用される Vue.js のコード ライブラリです。ただし、場合によっては、

Win7 ワイヤレス ネットワーク アダプターがありません Win7 ワイヤレス ネットワーク アダプターがありません Dec 23, 2023 pm 05:57 PM

Win7 ワイヤレス ネットワーク アダプターが表示されなくなったと多くのユーザーが報告しています。この場合、ネットワーク カードまたはネットワーク カード ドライバーに問題がある可能性があります。ネットワーク カード ドライバーを修復するか、正常なネットワーク カードを交換するだけで済みます。問題を解く。 win7 でワイヤレス ネットワーク アダプターが消えました 1. まず、[スタート] ボタンを右クリックし、[デバイス マネージャー] を選択します。 2. 次に、[ネットワーク アダプター] を見つけて、右クリックして、最初にドライバーを更新するか、最初にデバイスを無効にするかを選択します。ここをクリックして「プロパティ」をクリックすることもできます。 3. プロパティをクリックした後、上の「ドライバー」をクリックし、ここで「ドライバーの更新」をクリックします。 4. ここをクリックして、「ドライバー ファイルを自動的に検索して更新する」を選択します。 5. 完了後、コンピュータのネットワークを変更してリセットすることもできます。まずは勝利を押してください

Web ページをすばやく更新するにはどうすればよいですか? Web ページをすばやく更新するにはどうすればよいですか? Feb 18, 2024 pm 01:14 PM

ネットワークを日常的に使用する中でページの更新は頻繁に行われますが、Web ページにアクセスすると、Web ページが読み込まれない、表示が異常になるなどの問題が発生することがあります。現時点では、通常、問題を解決するためにページを更新することを選択しますが、ページを素早く更新するにはどうすればよいでしょうか?ページ更新のショートカット キーについて説明します。ページ更新ショートカットキーは、キーボード操作で現在のWebページを素早く更新する方法です。オペレーティング システムやブラウザが異なると、ページを更新するためのショートカット キーが異なる場合があります。以下では一般的な W を使用します。

Vue ルーティングについて詳しく説明した記事: vue-router Vue ルーティングについて詳しく説明した記事: vue-router Sep 01, 2022 pm 07:43 PM

この記事では、Vue ファミリー バケットの Vue-Router について詳しく説明し、ルーティングに関する関連知識について学びます。

Vue と Vue-Router: コンポーネント間でデータを共有するにはどうすればよいですか? Vue と Vue-Router: コンポーネント間でデータを共有するにはどうすればよいですか? Dec 17, 2023 am 09:17 AM

Vue と Vue-Router: コンポーネント間でデータを共有するにはどうすればよいですか?はじめに: Vue は、ユーザー インターフェイスを構築するための人気のある JavaScript フレームワークです。 Vue-Router は Vue の公式ルーティング マネージャーであり、シングルページ アプリケーションの実装に使用されます。 Vue アプリケーションでは、コンポーネントはユーザー インターフェイスを構築するための基本単位です。多くの場合、異なるコンポーネント間でデータを共有する必要があります。この記事では、Vue と Vue-Router でデータ共有を実現するのに役立ついくつかの方法を紹介します。

See all articles