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文のエラー問題の詳細な説明

推薦する

Linux サーバーの状態を監視する方法

私たち、特に Linux エンジニアは毎日 Linux サーバーを扱っています。サーバーのセキュリテ...

React双方向データバインディングの原理についての簡単な説明

目次双方向データバインディングとは双方向データバインディングの実装データ影響ビュービューはデータに影...

nginx proxy_cache キャッシュ設定の詳細な説明

序文:私は仕事柄、オンラインライブストリーミングの分野に携わっており、ビデオの再生やダウンロードには...

IE をフリーズさせる HTML コード

任意のテキスト エディターを開き、次のコードをコピーして、たとえば SomeFilename.htm...

Mysql のいくつかの複雑な SQL ステートメント (重複行のクエリと削除)

1. 重複行を見つける blog_user_relation a から * を選択 WHERE (...

Linux の Centos7 に Mysql5.7.19 をインストールする詳細なチュートリアル

1. MySQLをダウンロードするURL: https://dev.mysql.com/downlo...

Bootstrap Webページレイアウトグリッドの実装

目次1. Bootstrapグリッドシステムの仕組み1.1 12グリッドシステム1.2 Bootst...

要素UIポップアップコンポーネントをカプセル化する手順

el-dialogをコンポーネントとしてカプセル化するelement-ui を使用する場合、ポップア...

LinuxベースのLVMシームレスディスク水平拡張の詳細な説明

環境名前財産CPU 5650 円メモリ4Gディスク20G+4TB この時点で、サーバーにはすでに次の...

Web コンポーネントの内部イベント コールバックと問題点の分析

目次前面に書かれたWC とは何でしょうか?現在の欠陥1. コンポーネント内部イベントのコールバック2...

JavaScript の一般的なステートメント ループ、判定、文字列から数値

目次1. スイッチ2. whileループ3. Do/Whileループ3. 文字列を数値に変換する1....

プロフェッショナルおよび非プロフェッショナルのウェブデザイン

まず、Web ページのスタイルの形成は、主に Web ページのレイアウト設計、ページの色処理、画像と...

Linux で Apache を使用してファイル サーバーを構築する手順

1. ファイルサーバーについてプロジェクトでは、公開ソフトウェアやデータをプロジェクト チーム メン...