Vuex のコアコンセプトと基本的な使用法の詳細な説明

Vuex のコアコンセプトと基本的な使用法の詳細な説明

導入

Vuex はコンポーネントのグローバルな状態 (データ) を管理するための仕組みで、コンポーネント間のデータ共有を簡単に実現できます。

始める

インストール

①直接ダウンロードする方法

vuex.js ファイルを作成し、URL https://unpkg.com/vuexの内容をフォルダーに配置します。

②CND法

<script src="https://cdn.jsdelivr.net/npm/es6-promise@4/dist/es6-promise.auto.js"></script>

③NPM方式

npm インストール vuex --save

④糸法

糸を追加するvuex

NPMインストールの使い方

1. scr ファイルに store/index.js フォルダーを作成し、次の内容を記述します。

'vue' から Vue をインポートします
'vuex' から Vuex をインポートします
Vue.use(Vuex)
デフォルトの新しいVuex.Storeをエクスポートします({
州: {}、
変異: {},
アクション: {},
モジュール: {}
})

2. main.jsにインポートし、Vueインスタンスにマウントします。

'vue' から Vue をインポートします
'./store' からストアをインポートします
新しいVue({
  レンダリング: h => h(App),
  店
}).$mount('#app')

店舗コンセプトと利用方法

コンセプト:

コンポーネント間でデータを共有するために使用されます。

ストア内のデータを変更できるのはミューテーションのみです。

使用:

使用前に定義する

意味

州: {
  番号: 0
}

使用

方法1(推奨)

<div>{{ numAlias ​​}}</div>

'vuex' から { mapState } をインポートします。
エクスポートデフォルト{
  //計算関数が計算されます: mapState({
    // 文字列パラメータ 'count' を渡すことは `state => state.count` と同等です
    numAlias: 'num', // 共通キーは自分で付ける名前、値は受け取るデータです // 矢印関数を使用するとコードをより簡潔にすることができます count: state => state.count,
    // `this` を使用してローカル状態を取得できるようにするには、通常の関数 countPlusLocalState (state) { を使用する必要があります。
      state.count + this.localCount を返す
    }
    //他の計算関数を定義することもできます}),
  // または次のように // 計算された関数は次のように計算されます: {
    mapState(['count'])
  }
}

方法2

<div>{{ $store.state.count }}</div>

突然変異の概念と使用法

コンセプト:

ストア内のデータを変更します。他の場所のデータの変更は厳禁です。ミューテーションでは非同期操作を実行しないでください。

ミューテーションは同期的に実行する必要があり、非同期的に実行することはできません。

使用:

使用する前にメソッドを定義する

意味

突然変異:
	//カスタムメソッドを増分します。ストアパラメータはストアデータ、パラメータパラメータは受信データです。増分しません (状態、パラメータ) {
        // 状態の変更 state.num++
    }
}

使用

方法1(推奨)

'vuex' から { mapState, mapMutations } をインポートします。
//メソッド: {
	...mapMutations([
	    // ミューテーションカスタムメソッド名 'increment'
    ])、
    愛() {
    	// 直接 this.increment('渡す必要のあるデータは必要ありません') を呼び出します
        this.increment('ビン')
    }
}

方法2

メソッド: {
    愛() {
    	// this.$store.commit('カスタム名', '渡されたデータは渡されない可能性があります')
    	this.$store.commit('増分', 'データ')
    }
}

アクションの概念と使用法

コンセプト:

非同期操作を処理するために使用されます。

非同期操作を通じてデータを変更する場合は、ミューテーションではなくアクションを使用する必要があります。ただし、アクションでミューテーションをトリガーして間接的にデータを変更する必要があります。

アクションは、次の点を除いて、ミューテーションに似ています。

  • アクションは、データ (ステータス) を直接変更するのではなく、ミューテーションを送信します。
  • アクションには任意の非同期操作を含めることができます。

意味

突然変異:
	//カスタムメソッドを増分します。ストアパラメータはストアデータ、パラメータパラメータは受信データです。増分しません (状態、パラメータ) {
        // 状態の変更 state.num++
    }
},
アクション: {
	//カスタムメソッドを追加します。コンテキストはパラメータなので、vuexのインスタンスとして扱うことができます。add(context) {
    	//context.commit('ミューテーションで呼び出されるメソッド') を使用できます
    	context.commit('増分')
    }
}

使用

方法1(推奨)

'vuex' から { mapState、mapMutations、mapActions } をインポートします。
エクスポートデフォルト{
  メソッド: {
    ...マップアクション([
      'add', // `this.add()` を `this.$store.dispatch('add')` にマップします
      // `mapActions` はペイロードもサポートします:
      'add' // `this.add(amount)` を `this.$store.dispatch('add', amount)` にマッピングします
    ])、
    ...マップアクション({
      add: 'add' // `this.add()` を `this.$store.dispatch('increment')` にマップします
    })、
    愛() {
    	// this.add('渡す必要のあるデータは必要ありません') を直接呼び出します
    	this.add(データ)
    }
  }
}

方法2

メソッド: {
    愛() {
    	// this.$store.dispatch('カスタム名', '渡されたデータは渡されない可能性があります')
    	this.$store.dispatch('add', データ)
    }
}

ゲッターの概念と使用

コンセプト:

Getter は、ストア内のデータを処理して新しいデータを作成するために使用されます。 Getting は、Vue の計算省略形と同様に、ストア内の既存のデータを処理して新しいデータを形成できます。

意味

州: {
  番号: 0
},
ゲッター: {
    完了Todos: 状態 => {
    	状態.num = 10 を返す
    }
}

使用

方法1(推奨)

<div>{{ 完了したすべての作業 }}</div>

'vuex' から { mapState、mapMutations、mapActions、mapGetters } をインポートします。
エクスポートデフォルト{
  //計算関数が計算されます: {
  	...mapState(['count'])、
  	...mapmapGetters(['doneTodos'])
  }
}

方法2

<div>{{ $store.getters.doneTodos }}</div>

要約する

この記事はこれで終わりです。皆さんのお役に立てれば幸いです。また、123WORDPRESS.COM のその他のコンテンツにも注目していただければ幸いです。

以下もご興味があるかもしれません:
  • Vuex の使い方入門チュートリアル
  • まだvuexをお使いですか?piniaについて学ぶ
  • Vuex でのアクションの使用に関する詳細なチュートリアル
  • VueXのインストールと使用方法の基本チュートリアル
  • Vue学習におけるVuexの使用の詳細な説明
  • Vuexの特性と機能の詳細な説明
  • Vueプロジェクトでvuexを使用する方法
  • Vuex全体のケースの詳細な説明
  • Vuexの役割についての深い理解
  • 1 つの記事で Vuex を理解する
  • Vuex の詳細な紹介と使用方法

<<:  Chromeブラウザ設定の新バージョンではクロスドメイン実装が可能

>>:  ページの下部にHTMLフッターを配置する簡単な方法

推薦する

Mysqlツリー再帰クエリの実装方法

序文部門テーブルなどのデータベース内のツリー構造データの場合、部門のすべての従属部門または部門のすべ...

インターネットウェブデザインにおけるバイオニックデザインの簡単な紹介

バイオニックデザインといえば、飛行機の発明、ドバイのブルジュ・アル・アラブ、平泳ぎなどを思い浮かべる...

CSS を使用して、左側に固定幅、右側に適応幅を持つ 2 列レイアウトを実装する複数の方法

CSS を使用して、左側に固定幅、右側に適応幅を持つ 2 列レイアウトを実装する 7 つの方法。コー...

Pengyou.com モバイル クライアントのダウンロード ページのデザイン共有 (画像とテキスト)

まずは簡単なデータを見てみましょう。 Googleが発表したレポートによると、 ①中国の都市の97%...

React+axios は github 検索ユーザー機能を実装します (サンプル コード)

負荷リクエスト成功リクエストに失敗しました cmdをクリックし、ファイルパスでEnterキーを押しま...

Dockerはホスト間のネットワーク通信を実現するためにMacvlanを導入する

基本的な概念: Macvlanの動作原理: Macvlan は、Linux カーネルでサポートされて...

dockerでlnmp環境を構築する方法

プロジェクトディレクトリを作成する php ディレクトリをコピーする次のプロジェクト構造を作成します...

MySQL の悲観的ロックと楽観的ロックの使用例

悲観的ロック悲観的ロックは、データを悲観的であるとみなします。データをクエリするときに、ロックを追加...

ミニプログラムにより、製品属性の選択や仕様の選択が可能

この記事では、ミニプログラムで製品属性選択または仕様選択を実装するための具体的なコードを参考までに共...

MySQL binlog を使用して誤って削除されたデータベースを復元する方法

目次1 現在のデータベースの内容を表示し、データベースをバックアップする2 bin_log関数を有効...

CSSリストのスライドにより、下部に隠れるのを防ぎ、長い画面モデルの処理に適応します。

1. モバイル端末がリストスライドを処理するとき、WeChat には下部にページに戻るボタンが組み...

MySQL 5.7.21 のインストールと設定のチュートリアル

mysql5.7.21の簡単なインストール構成は次のとおりです。 1. MySQLのインストール1....

Ubuntuデュアルシステムが起動時に停止する問題の解決方法の詳細な説明

起動時に Ubuntu デュアル システムが停止する問題の解決方法 (Ubuntu 16.04 およ...

MySQL テーブル作成外部キー エラーの解決方法

データベーステーブルA: テーブル task_desc_tab を作成します ( id INT(11...

Reactは複雑な検索フォームの展開と折りたたみ機能を実装します

時間に余裕を持って、過去を忘れましょう。前のセクションでは、[検索] フォームとクエリおよびリセット...