Vue3.0 で Vuex 状態管理を開始する方法をすぐに習得します

Vue3.0 で Vuex 状態管理を開始する方法をすぐに習得します

Vuex は、Vue.js アプリケーション専用に開発された状態管理パターンです。集中型ストレージを使用してアプリケーションのすべてのコンポーネントのステータスを管理し、対応するルールを使用して、ステータスが予測可能な方法で変更されるようにします。 Vuex は Vue の公式デバッグ ツール devtools にも統合されており、ゼロ構成のタイムトラベル デバッグ、状態スナップショットのインポートとエクスポートなどの高度なデバッグ機能を提供します。
大規模なシングルページ アプリケーションを開発する予定がない場合は、Vuex の使用は面倒で冗長になる可能性があります。確かに、アプリが十分にシンプルな場合は、Vuex を使用しない方がよいでしょう。必要なのはシンプルなストアパターンだけです。ただし、中規模から大規模のシングルページ アプリケーションを構築する必要がある場合は、コンポーネント外部の状態をより適切に管理する方法を検討する可能性が高く、Vuex が自然な選択になります。

1. 状態

Vuex の状態ストレージはレスポンシブなので、ストア インスタンスから状態を読み取る最も簡単な方法は、計算プロパティで状態を返すことです。

'vue' から { computed } をインポートします
'vuex' から {useStore} をインポートします。
エクスポートデフォルト{
  設定 () {
    定数ストア = useStore()
    戻る {
      カウント: 計算された(() => store.state.count)
    }
  }
}

ゲッター

Vuex を使用すると、ストア内に「ゲッター」を定義できます (これはストアの計算されたプロパティと考えることができます)。計算プロパティと同様に、ゲッターの戻り値は依存関係に基づいてキャッシュされ、依存関係の値が変更された場合にのみ再計算されます。

'vue' から { computed } をインポートします
'vuex' から {useStore} をインポートします。
エクスポートデフォルト{
  設定 () {
    定数ストア = useStore()
    戻る {
      double: 計算された(() => store.getters.double)
    }
  }
}

突然変異

Vuex ストア内の状態を変更する唯一の方法は、ミューテーションを送信することです。 Vuex のミューテーションはイベントと非常によく似ています。各ミューテーションには、文字列イベント タイプ (type) とコールバック関数 (handler) があります。このコールバック関数は、実際に状態の変更を行う場所であり、最初の引数として状態を受け取ります。

const ストア = createStore({
  州: {
    カウント: 1
  },
  突然変異:
    増分(状態) {
      状態.count++
    }
  }
})

ミューテーション ハンドラーを直接呼び出すことはできません。このオプションは、イベント登録に似ています。「増分型のミューテーションがトリガーされたら、この関数を呼び出します。」ミューテーション ハンドラーを呼び出すには、対応する型で store.commit メソッドを呼び出す必要があります。

store.commit('増分')

アクション

アクションは、次の点を除いて、ミューテーションに似ています。
アクションは、状態を直接変更するのではなく、突然変異を送信します。
アクションには任意の非同期操作を含めることができます。

定数ストア = 新しい Vuex.Store({
  州: {
    カウント: 0
  },
  突然変異:
    増分(状態) {
      状態.count++
    }
  },
  アクション: {
    インクリメント(コンテキスト) {
      context.commit('増分')
    }
  }
})

アクションは store.dispatch メソッドによってトリガーされます。

store.dispatch('増分')

モジュール

単一の状態ツリーを使用することで、すべてのアプリケーション状態が 1 つの大きなオブジェクトに集中化されます。アプリケーションが非常に複雑になると、ストア オブジェクトが非常に肥大化する可能性があります。
上記の問題を解決するために、Vuex ではストアをモジュールに分割することができます。各モジュールには独自の状態、ミューテーション、アクション、ゲッター、さらにはネストされたサブモジュールがあり、上から下まで同じように分割されています。

定数モジュールA = {
  状態: () => ({ ... }),
  変異: { ... },
  アクション: { ... },
  ゲッター: { ... }
}
定数モジュールB = {
  状態: () => ({ ... }),
  変異: { ... },
  アクション: { ... }
}
const ストア = createStore({
  モジュール:
    a: モジュールA、
    b: モジュールB
  }
})

6. vuex の永続状態

ページを更新してプロジェクトをリロードすると、vuex がリセットされ、すべての状態が初期状態に戻ります。vuex-persistedstate を使用すると、この状況を回避できます。

1. インストール

npm インストール --save vuex-persistedstate

2. 使用

「vuex」からVuexをインポートします。
「vuex-persistedstate」からcreatePersistedStateをインポートします。
定数ストア = 新しい Vuex.Store({
  プラグイン: [createPersistedState()],
});

上記は、Vue3.0 で Vuex 状態管理をすぐに開始する方法の詳細です。Vuex 状態管理の詳細については、123WORDPRESS.COM の他の関連記事に注目してください。

以下もご興味があるかもしれません:
  • Vue3 で状態管理を実装するために provide を使用する方法
  • Vue フロントエンド開発補助機能状態管理詳細例
  • vuexプロジェクトにおけるログインステータス管理の実践プロセス
  • Vueのシンプルな状態管理ストアモードを理解する方法
  • vuex での mapState の考え方の応用
  • Vueプロジェクトでvuexを使用する方法
  • vuex名前空間の使用
  • Vue の状態管理: Vuex の代わりに Pinia を使用する

<<:  CentOS7 で yum を使用して PostgreSQL と PostGIS をインストールする方法

>>:  CentOS で MySQL を完全にアンインストールする方法

推薦する

MYSQL ストアドプロシージャと関数の簡単な記述

ストアドプロシージャとは簡単に言えば、これは強力で、JAVA 言語のメソッドに似た比較的複雑な論理関...

docker-compose.yml ファイル内の一般的なテンプレート コマンドの詳細な説明

注意: docker-compose.yml ファイルを書き込むときは、すべてのコロン (:) とダ...

Win10 に Tomcat サーバーをインストールし、環境変数を構成する詳細なチュートリアル (画像とテキスト)

目次JDKをダウンロードしてインストールするTomcat 圧縮パッケージをダウンロードTomcatの...

Windows 上で Nginx+Tomcat クラスタを実装するプロセスの分析

導入: Nginx (エンジン エックスと同じ発音) は、BSD のようなプロトコルに基づいてリリー...

MySQL パフォーマンス最適化インデックス プッシュダウン

インデックス条件プッシュダウン (ICP) は MySQL 5.6 で導入され、クエリを最適化するた...

Linuxはiftopを使用してネットワークカードのトラフィックをリアルタイムで監視します

Linux は iftop を使用してネットワーク カードのトラフィックをリアルタイムで監視します。...

Linux C バックグラウンドサービスプログラムの単一プロセス制御の実装

導入通常、バックグラウンド サーバー プログラムには 1 つのプロセスのみが必要ですが、単一のプロセ...

js でシンプルなタブを実装する

タブ選択カードは、実際の Web ページで非常に頻繁に使用されます。基本的に、すべての Web ペー...

HTML スタイル タグと関連する CSS リファレンスの詳細な説明

HTML スタイル タグスタイルタグ - ドキュメント内でスタイルを宣言するときにこのタグを使用しま...

Access_Tokenの統合管理を実現するミニプログラム開発

目次TOKEN タイマーリフレッシュ2. access_tokenの内部設計2.1 access_t...

テーブルを作成するための HTML dl、dt、dd タグとテーブル作成テーブル

ウェブサイトの開発とメンテナンスのコストが削減されるだけでなく、コードもよりセマンティックになります...

Apache ストレステストツールのインストールと使用

1. ダウンロードApacheの公式サイトhttp://httpd.apache.org/にアクセス...

Vueコンポーネントは、写真やビデオをアップロードするためのサンプルコードをカプセル化します

まず依存関係をダウンロードします: cnpm i -S vue-uuid ali-oss画像フィール...

MYSQL メタデータ ロック (MDL ロック) MDL ロックの問題分析

1. はじめにMYSQL の MDL ロックは常に頭痛の種でした。ロックについて話すとき、通常は I...

Vueカスタムディレクティブの詳細

目次1. 背景2. ローカルカスタム指示3. グローバルカスタム指示4.1 カスタムコマンドフック関...