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

推薦する

メモリ構成が過剰でMySQLが起動できない問題の解決方法

問題の説明MySQL の起動時にエラーが報告されます。エラー ログを確認してください。 [エラー] ...

CSS 前景と背景の自動カラーマッチング技術の紹介 (デモ)

1. カラーマッチング効果のプレビュー下の GIF に示すように、ボタンの背景色が徐々に薄くなると...

DIVマスクを使用して、マウスでチェックボックスを直接チェックすることが無効である問題を解決します

フロントエンドの開発過程で、チェックボックスが必要な状況が発生しました。ユーザー操作の利便性を考慮し...

Nginxにモジュールを動的に追加する方法

前面に書かれた多くの場合、現在のプロジェクトの状況とビジネスニーズに基づいて Nginx をインスト...

フロントエンドネットワーク、JavaScriptの最適化、開発のヒントについて簡単に説明します。

1. ネットワークの最適化YSlowには23のルールがあります。これら数十のルールは、主に、不要な...

Mysql 5.7.17 をインストールした後、MySQL にログインするチュートリアル

mysql-5.7.17 のインストールについては記事の下部で紹介されているので、参考にしてください...

SpringbootはDockerデプロイメントを統合し、Dockerイメージを構築する2つの方法を実装します。

Docker は、あらゆるアプリケーション用の軽量でポータブルな自己完結型コンテナーを簡単に作成で...

Nginx で IP と IP 範囲をブロックする方法

前面に書かれたNginx は単なるリバース プロキシおよび負荷分散サーバーではなく、電流制限、キャッ...

MySQL レプリケーション テーブルの詳細とサンプル コード

MySQL レプリケーション テーブルの詳細な説明テーブル構造、インデックス、デフォルト値などを含む...

原因不明のMySqlサービス消失の解決策

原因不明のMySqlサービス消失の解決策先ほど、MySQL-Front が突然 MySql を開けな...

Vue におけるキープアライブ マルチレベル ルーティング キャッシュの問題

目次1. 問題の説明2. 原因分析3. 解決策4. 処理1. 問題の説明調整センターでは、最後の 2...

MySQL データのバックアップと復元のサンプル コード

1. データのバックアップ1. mysqldumpコマンドを使用してバックアップするmysqldum...

HTML5 と HTML4 の 10 の主な違い

HTML5 は HTML 標準の次のバージョンです。ますます多くのプログラマーが、Web サイトの構...

フレックスマルチカラムレイアウトで発生する問題と解決策の詳細な説明

フレックス レイアウトは間違いなくシンプルで使いやすいです。レイアウトをよりシンプルかつ高速にします...

Docker ベースの Selenium 分散環境の構築

1.画像をダウンロードするdocker pull selenium/hub docker pull ...