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でのサービスの実装

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

推薦する

MySql クライアントが数秒で終了する問題を解決する (my.ini が見つからない)

問題の説明 (環境: windows7、MySql8.0)今日、MySql をインストールした後、M...

MySQLで行または列をソートする方法

方法:説明: どちらも達成できません:方法1: sp_product から sp.productid...

Vue 3 での watch と watchEffect の新しい使い方

目次1. 時計の新しい使い方1.1. ウォッチの使用構文1.2. 複数の属性値を監視する1.3. 参...

MySQL マスター スレーブ データベースが同期されない問題を解決する 2 つの方法

目次MySQL マスター スレーブ データベースが同期されない問題を解決する 2 つの方法1. 非同...

適応的な幅と高さを持つ9つの正方形グリッドの背景画像の切り取りの分析

<br />幅と高さが適応するオリジナルの 9 グリッド レイアウトをベースに、ネットワ...

ウェブページのフラッシュアニメーションが表示されない問題の解決策

<br />解決手順は次のとおりです。スタート -> 実行 -> reged...

CentOS7で新しいデータディスクをマウントするための完全な手順

序文新しい VPS を購入しました。新しい VPS のデータ ディスクはデフォルトではシステムにマウ...

HTML テーブルタグチュートリアル (13): 内部境界スタイル属性ルール

RULES を使用すると、テーブルの内部境界のスタイルを制御できます。基本的な構文<TABLE...

NODE.JS を使用して WEBSERVER を作成する手順

目次Node.jsとはNodeJSをインストールするNode を使用して Hello World を...

MySQL ジョイントテーブル更新デー​​タの詳細な例

1.MySQL UPDATE JOIN構文MySQL では、UPDATE ステートメントでJOIN句...

HTML+CSS+JavaScript でシンプルな三目並べゲームを作成する

目次HTMLの実装CSSを追加Javascript部分の実装デモアドレス HTMLの実装まず、hea...

MySQL エラー「すべての派生テーブルには独自のエイリアスが必要です」の解決方法

MySQL は、マルチテーブルクエリを実行するときにエラーを報告します。 [SQL] SELECT ...

Ubuntu 20.04 中国語入力方法のインストール手順

この記事では、Google 入力方法をインストールします。実は以前はSogou入力方式を使っていたの...

JavaScript 関数呼び出し、適用、バインド メソッドのケース スタディ

要約する1. 類似点どちらも、ターゲット関数が実行されると内部の this ポインターを変更できます...

mysql5.7 のエンコーディングを utf8mb4 に設定する方法

最近、問題に遭遇しました。モバイル端末の絵文字や一部の絵文字は 4 バイトですが、UTF-8 は 3...