Vuex データの永続性を実装するためのアイデアとコード

Vuex データの永続性を実装するためのアイデアとコード

vuexとは

vuex: vue.js専用に開発された状態管理ツールで、すべてのコンポーネントの状態を集中的に保存します。

5 つの属性: 状態、ゲッター、ミューテーション、アクション、モジュール

基本的な使い方:

新しいstore.jsファイルを作成し、最終的にmain.jsに導入して実際の列にマウントします。

   'vue' から Vue をインポートします
   'vuex' から Vuex をインポートします
   Vue.use(Vuex)
   定数状態 = {}
   const ゲッター = {}
   const 変異 = {}
   定数アクション = {}
   デフォルトの新しいVuex.Storeをエクスポートします({
       州、
       ゲッター、
       突然変異、
       アクション
   
   })

状態属性: 保存したいデータなどの状態を保存します

ゲッター: 共有プロパティと同様に、this.$store.gettersを使用して状態に保存されているデータを取得できます。

ミューテーション: 状態を変更する唯一の方法は、ミューテーションを送信することです。this.$store.commit()

アクション: 状態を変更するためにディスパッチを通じて分散できるワンステップのミューテーション

Vuex データの永続性

ご存知のとおり、Vuex データはメモリに保存され、Web ページを更新するとこれらのデータは失われます。リフレッシュ後も一部のデータが保持されることを期待しており、そのためにはデータの保存が必要です。ここでは、localStorage を使用して Vuex でデータを永続化する記録を示します。

実装のアイデア

  • 状態内のデータは理論上はミューテーションによってのみ更新できるため、ミューテーション イベントをリッスンすることができます。各イベントが実行された後、この時点での状態データ全体を文字列に変換し、localStorage に格納します。
  • ページが状態を初期化するときに、localStorage 値を読み取り、それを JSON に変換し直して、現在の状態にマージします。
  • この方法は単純な実装であり、単純なオブジェクトにのみ適用できます。複雑なオブジェクトの場合、JSON に変換すると、対応するイベントとメソッドが失われる可能性があります。後で他の方法で保存することを検討できます。

コード

プラグイン:

エクスポートデフォルト(オプション = {})=> {
  const storage = options.storage || (window && window.localStorage);
  const key = options.key || "vuex";

  // 状態の値を取得する const getState = (key, storage) => {
    定数値 = storage.getItem(キー);
    試す {
      戻り値の型が "undefined" !== ? JSON.parse(value) : undefined;
    } キャッチ (エラー) {
      コンソールで警告します(エラー);
    }
    未定義を返します。
  };

  // 状態の値を設定する const setState = (key, state, storage) =>
    storage.setItem(キー、JSON.stringify(状態));

  戻り値 (保存) => {
    // 初期化中にデータを取得します。存在する場合は、元の vuex 状態を置き換えます。const data = Object.assign(store.state, getState(key, storage));
    if (データ) {
      データをストアに置き換えます。
    }

    // ストアの変更をサブスクライブします。ハンドラは各ミューテーションが完了した後に呼び出され、ミューテーションとミューテーション後の状態をパラメータとして受け取ります。store.subscribe((mutation, state) => {
      setState(キー、状態、ストレージ);
    });
  };
};

呼び出し方法:

"@/plugins/VuexPersist" から VuexPersist をインポートします。

エクスポートデフォルトcreateStore({
  プラグイン: [VuexPersist()],
});

要約する

Vuex のデータ永続性の実装に関するこの記事はこれで終わりです。Vuex のデータ永続性に関するより関連性の高いコンテンツについては、123WORDPRESS.COM で過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • vuexサードパーティパッケージを使用してデータの永続性を実装する方法
  • vuex データの永続化のための 2 つの実装ソリューション
  • VUEX データの永続性、リフレッシュ後の再取得の例
  • Vuexはデータ状態の永続性を実装します
  • シンプルなvuex永続化ツールを実装する方法
  • vueの実践的な応用におけるvuexの永続性の詳細な説明

<<:  Linux の一般的なテキスト処理コマンドと vim テキストエディタ

>>:  case when文のエラー問題の詳細な説明

推薦する

HTML webpackプラグインの使用に関する簡単な分析

html-webpack-pluginプラグインを使用してページを開始すると、htmlページをメモリ...

HTTPS の原則の説明

HTTPS ウェブサイトの構築コストが下がるにつれて、ほとんどのウェブサイトが HTTPS プロトコ...

ボタンの 4 つのクリック応答方法の概要

ボタンは頻繁に使用されます。ここでは、イベント処理メソッドを整理し、実装方法が多数あることを発見しま...

jsを使用して簡単なスネークゲームを書く

この記事では、参考までに、jsで書かれたシンプルなスネークゲームの具体的なコードを紹介します。具体的...

Vue はユーザーのログイン状態を維持します (さまざまなトークン保存方法)

目次クッキーの設定方法クッキーのデメリット: LocalStorage と SessionStora...

TomcatをダウンロードしてLinuxにインストールする詳細な手順

Linux に触れたばかりの方には、この内容が役に立つかもしれません。Linux にしばらく触れてい...

CUDA8.0とCUDA9.0はUbuntu16.04で共存します

序文Github にある以前のコードには、CUDA 8.0 環境が必要なものもあります。初心者の場合...

ReactでのDOM操作の実装

目次前の単語使用シナリオ参照HTML要素クラスコンポーネント機能コンポーネント[DOMノードを親コン...

Mysqlのインポートとエクスポート時に発生する問題の解決

背景すべての業務を Docker の運用管理に移行してから、一連の落とし穴に遭遇しましたが、今回は ...

Linux xargsコマンドの使用

1. 機能: xargs は、stdin 内のスペースまたは改行で区切られたデータをスペースで区切ら...

MySQL のジオメトリ型を使用して経度と緯度の距離の問題を処理する方法

テーブルを作成する テーブル `map` を作成します ( `id` int(11) NULLではな...

MySQLでTEXT/BLOB型を使用する際の注意点を詳しく説明します

1. TEXTとBLOBの違いTEXT ファミリと BLOB ファミリの唯一の違いは、BLOB 型は...

CSSスタイルのカスケーディングルールの詳細な説明

CSS スタイル ルール構文スタイルは、CSS の基本単位です。各スタイル ルールは、セレクターと宣...

MYSQLでプロシージャの名前を変更する方法の詳細な説明

最近、ストアド プロシージャの名前を変更する機能を使用しました。インターネットで情報を検索しましたが...

ffmpeg 中国語パラメータの説明と使用例

1. ffmpeg がビデオ ファイルをプッシュする場合、オーディオとビデオのエンコード形式は H2...