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フッターを配置する簡単な方法

推薦する

Reactのヒントはフックの依存関係の問題を解消する方法を教えます

reactプロジェクトで非常に一般的なシナリオ: const [watchValue、setWatc...

MySQL 8.0.11 のインストールと設定方法のグラフィックチュートリアル

MySQL 8.0のインストールと設定方法は参考までに。具体的な内容は以下のとおりです。ダウンロード...

Windows での MySQL 5.7.18 インストール チュートリアル

この記事では、圧縮パッケージから MySQL をインストールする方法について説明します。 1. My...

ウェブページのアクセス速度に関する主な問題と解決策

<br />ウェブサイトのアクセス速度はウェブサイトのトラフィックに直接影響を及ぼし、ウ...

TypeScript ジェネリックパラメータのデフォルト型と新しい厳密なコンパイルオプション

目次概要コンポーネントクラスの型定義を作成するジェネリック型を使用してPropsとStateを定義す...

MYSQL接続ポートが占有され、ファイルパスエラーが発生する問題を解決します

今朝、私は Wampserver を使用してローカルの win7 マシン上に PHP 環境を構築し、...

ウェブページの幅を携帯電話の画面(ビューポート)の幅に自動的に適応させる実装コード

一般的な書き方は次のとおりです。 XML/HTML コードコンテンツをクリップボードにコピー<...

MySQL 完全折りたたみクエリ正規マッチングの詳細な説明

概要前の章では、クエリのフィルター条件について学習しました。MySQL では、like % ワイルド...

JavaScriptはブラウザがIEかどうかを判定します

フロントエンド開発者としては、IEの落とし穴は避けて通れません。他のブラウザはいいのにIEは壊れてい...

jQueryとCSSを組み合わせてトップに戻る機能を実現

CSS操作 CS $("").css(名前|プロ|[,値|関数]) 位置$(&q...

Vueバインディングオブジェクトと配列変数を変更した後にレンダリングできない問題の解決策

プロジェクトシナリオ:ページ表示には <ul> タグがあります。リストデータを動的に表示...

複数ページ通信を実現する JavaScript の sharedWorker の詳細な例

こんなことがありました。今日はGitHubで遊んでいました。最初はログインせずにいくつかのページを閲...

Vue の v-model ディレクティブと .sync 修飾子の違いの詳細な説明

目次vモデル.sync微妙な違い機能シナリオを要約します。 vモデル <!--親コンポーネント...

MySQL ソート機能の詳細

目次1. 問題のシナリオ2. 原因分析3. 解決策4. 知識を広げる4.1 クエリの最適化を制限する...