Vue ページ状態の永続化の詳細な説明

Vue ページ状態の永続化の詳細な説明

要件: 左のツリーと右のテーブル。組織ツリーでノードを選択した後、詳細ページに入り、戻ったときにそのノードを選択したままにします。他のクエリ条件でも状態を維持する必要があります。

アイデア: vuex と localStorage を組み合わせてデータをキャッシュします。ツリーノードまたはクエリボタンをクリックすると、データが vuex に保存され、localStorage にも保存されます。ページがロールバックすると、localStorage のデータが vuex に配置されます。ページコードでは、vuex にデータが保存されているかどうかを判断します。保存されている場合は、直接使用されます。保存されていない場合は、デフォルトで初期データが使用されます。ページナビゲーションルートがジャンプすると、キャッシュされたページデータはクリアされます。

コード:

ツリーノードをクリックすると、ID が vuex に保存されます。ディスパッチによるアクションのトリガー

this.$store.dispatch('SetDeviceFaultId', data.id)

vuexのアクションでは、コミットすることでミューテーションのメソッドをトリガーします。

RemoveDeviceFaultId({ commit }) { //commit('REMOVE_DEVICEFAULTID') は後でデータをクリアするために使用されます。
},
SetDeviceManageId({コミット}, id) {  
    コミット('SET_DEVICEMANAGEID', id);
},

mutations : データを変更する

REMOVE_DEVICEFAULTID: (状態) => {
      state.devicFaultId = null です     
      ストレージを削除します。
},
SET_DEVICEMANAGEID: (状態、デバイス管理ID) => {
      state.deviceManageId = デバイス管理Id
      ストレージを設定します('deviceManageId', deviceManageId);
}

state: ページが最初に作成されたときに localStorage からキャッシュされたデータを取得します

デバイス障害ID: Storage.get('デバイス障害ID'),

詳細ページに入り戻る

this.params.organizeId = this.$store.state.tree.devicFaultId ? this.$store.state.tree.devicFaultId : res.data[0].id;

他のルートをクリックするときは、キャッシュされたデータをクリアすることを忘れないでください

this.$store.dispatch('RemoveDeviceFaultId')

補充:

storage.jsコード

vuexに導入した後はStorage.setを通じて利用することができます

要約する

この記事はこれで終わりです。皆さんのお役に立てれば幸いです。また、123WORDPRESS.COM のその他のコンテンツにも注目していただければ幸いです。

以下もご興味があるかもしれません:
  • vuexサードパーティパッケージを使用してデータの永続性を実装する方法
  • Vuex データの永続性を実装するためのアイデアとコード
  • Vuexはデータ状態の永続性を実装します
  • Vuex 永続化プラグイン (vuex-persistedstate) は、更新データの消失の問題を解決します。
  • Vue プロジェクトにおける永続ストレージデータの実装コード

<<:  ホストサービスにアクセスするDockerでのサービスの実装

>>:  ブロックレベル要素、インライン要素、可変要素の概要

推薦する

Docker共通コマンドの詳しい解説 Study03

目次1. ヘルプコマンド2. ミラーコマンド3. コンテナコマンド1. ヘルプコマンド1. 現在のD...

nginxを使用して画像サイズを動的に変換し、サムネイルを生成します。

Nginx ngx_http_image_filter_module モジュール (nginx バ...

JavaScript サンドボックスの探索

目次1. シナリオ2. サンドボックスの基本機能3. iframeの実装4. Webワーカーの実装5...

nginx.conf ファイルの構文強調表示とフォーマット設定には nginx.vim ツールを使用します。

私はtengineを使用しています。インストールディレクトリは/usr/local/tengineで...

nginx+php-fpm サービスの HTTP ステータス コード 502 の詳細な分析

弊社の Web プロジェクトの 1 つでは、新しい都市の増加によりトラフィックと DB 負荷が増加し...

CSS3 を使用した背景ぼかし効果の 3 つの例

導入から始めず、いきなり本題に入りましょう。通常の背景ぼかし効果は次のとおりです。 プロパティを使用...

js 配列 fill() 充填メソッド

目次1. fill() 構文2. fill() の使用3. まとめ序文:配列の初期化方法についてはよ...

JavaScript の実行コンテキストとコールスタックの詳細な説明

目次1. 実行コンテキストとは何か2. 実行コンテキスト スタックとは何ですか? 3. 実行コンテキ...

ウェブデザインの教育または学習プログラム

セクションコース内容営業時間1 ウェブデザインの概要2 2 HTML 基本タグとフォーマットタグ 2...

docker と docker-compose による eureka の高可用性の実現の詳細な説明

最近、新しいプロジェクトでは springcloud と docker が使用されています。この 2...

VMware仮想マシンを使用してUbuntu 20.04をインストールする完全なチュートリアル

Ubuntu は比較的人気のある Linux デスクトップ システムです。最近、Ubuntu 20....

インデックスは MySQL クエリ条件で使用されますか?

雇用主から MySQL クエリ条件でインデックスが使用されるかどうかを尋ねられた場合、どのように答え...

フロントエンドでよく使われるjs関数メソッド

目次1. メール2. 携帯電話番号3. 電話番号4. URLアドレスですか? 5. 文字列ですか? ...

Centos8 (最小インストール) Python3.8+pip のインストール方法に関するチュートリアル

Python8のインストールを最小化した後、Python3.8.1をインストールしました。オンライン...

MySQLサービスを削除する具体的な方法

MySQLは次のエラーを表示します「コントロール パネル -> 管理ツール -> サービ...