Vue フロントエンド開発補助機能状態管理詳細例

Vue フロントエンド開発補助機能状態管理詳細例

マップ状態

コンポーネントが複数の状態を取得する必要がある場合、これらすべての状態を計算プロパティとして宣言すると、多少の繰り返しと冗長性が生じます。この問題を解決するには、計算されたプロパティを生成する mapState ヘルパー関数を使用します。 mapState が使用されていない場合、オブジェクトの状態は通常、使用されているコンポーネントの computes プロパティから取得され、次のように使用されます。

  //....
  計算: {
        カウント: 関数(){
            this.$store.state.count を返します
        }
    }
 //....    

mapState を使用すると、次のように簡略化できます。

import { mapState } from 'vuex' //mapStateオブジェクトを導入する export default {
  // ...
  計算: mapState({
    // 矢印関数はコードをより簡潔にすることができます count: state => state.count,
  })
}
または import { mapState } from 'vuex' //mapStateオブジェクトを導入 export default {
  // ...
  計算: mapState({
    'count'、//状態名 countAlias と一致する: 'count' //countAlias は参照コンポーネントで使用されるエイリアスです})
}

マップゲッター

mapGetters ヘルパー関数は、state と同様に、ストア内のゲッターをローカルの計算プロパティにマップするだけです。計算関数のコードは次のように簡略化されます。

'vuex' から { mapGetters } をインポートします。
エクスポートデフォルト{
  // ...
  計算: {
  // オブジェクトスプレッド演算子を使用して、計算されたオブジェクトにゲッターを混ぜます...mapGetters([
      'countDouble',
      'CountDoubleAndDouble',
      //..
    ])
  }
}

MapGetters ではエイリアスも使用できます。

マップミューテーション

mapMutations ヘルパー関数を使用して、コンポーネント内のメソッドを store.commit 呼び出しにマップします。簡略化されたコードは次のとおりです。

'vuex' から { mapMutations } をインポートします。
エクスポートデフォルト{
  //..
  メソッド: {
    ...mapMutations([
      'increment' // this.increment() を this.$store.commit('increment') にマップします
    ])、
    ...mapMutations({
      add: 'increment' // this.add() を this.$store.commit('increment') にマップします
    })
  }
}

マップアクション

mapActions ヘルパー関数を使用して、コンポーネント メソッドを store.dispatch 呼び出しにマップします。簡略化されたコードは次のとおりです。

'vuex' から { mapActions } をインポートします。
エクスポートデフォルト{
  //..
  メソッド: {
    ...マップアクション([
      'incrementN' // this.incrementN() を this.$store.dispatch('incrementN') にマップします
    ])、
    ...マップアクション({
      add: 'incrementN' // this.add() を this.$store.dispatch('incrementN') にマップします
    })
  }
}

Vue 状態管理 (II) の例に従って、これは補助関数を使用して実行されます。補助関数は CountChange および ComputeShow コンポーネントで使用され、残りのコードを変更する必要はありません。
ComputeShowでは、mapStateとmapGettersという2つの補助関数が使われています。コードは次のようになります。

<テンプレート>
  <div align="center" style="background-color: ビスク;">
    <p>以下は、computed を使用してストア内のステータスデータを直接取得し、ステータスデータが変更されたときに同期的に更新する方法です。</p>
    <h1>状態を受け取るには computed を使用します: {{ computedState }}</h1>
    <h1>getter を受け取るには computed を使用します: {{ computedGetters }}</h1>
  </div>
</テンプレート>
<スクリプト>
  import { mapState,mapGetters } from 'vuex' //mapState、mapGetters オブジェクトを導入 export default {
    名前: 'ComputeShow',
    計算:{
    ...mapState({
      computedState:'count' //エイリアス: computedState
    })、
    ...mapGetters({
      computedGetters:'getChangeValue' //エイリアス: computedGetters
    })
    }
  }
</スクリプト>
<スタイル>
</スタイル>

マップを使用するときは、ストアのコンテンツから切り離されるようにエイリアスを追加することをお勧めします。 CountChangeでは、mapMutationsとmapActionsという2つの補助関数が使用されています。コードは次のとおりです。

<テンプレート>
  <div align="center">
    <input type="number" v-model="paramValue" />
    <button @click="addNum({res: parseInt(paramValue)})">+増加</button>
    <button @click="subNum">- 減少</button>
  </div>
</テンプレート>
<スクリプト>
  輸入 {
    マップミューテーション、
    マップアクション
  } from 'vuex' //mapMutations、mapActionsオブジェクトを導入 export default {
    名前: 'CountChange',
    データ() {
      戻る {
        パラメータ値: 1,
      }
    },
    メソッド: {
      ...mapMutations({
        subNum: 'sub' //別名subNumを追加
      })、
      ...マップアクション({
        addNum: 'increment' // this.incrementN() を this.$store.dispatch('incrementN') にマップします
      })
    }
  }
</スクリプト>
<スタイル>
</スタイル>

同様に、ストア内のメソッドにエイリアスを付け、パラメータを渡す必要がある場合は、エイリアスを介してアクションまたはミューテーションに渡します。たとえば、「addNum({res: parseInt(paramValue)})」はオブジェクト {res: ''} を送信します。

まとめ

補助関数自体には新しい意味はなく、主に State、Getter、Mutations、Actions を使用する際のコードを簡素化するために使用されます。

上記は、Vue フロントエンド開発における補助機能の状態管理の詳細な例です。Vue 補助機能の状態管理の詳細については、123WORDPRESS.COM の他の関連記事に注目してください。

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

<<:  Docker イメージの作成、アップロード、プル、およびデプロイ操作 (Alibaba Cloud を使用)

>>:  MySQLリモート接続を有効にする方法

推薦する

Centos7 への mysql8.0rpm のインストール チュートリアル

まず、図をダウンロードしてください 1. まず、centos7に付属しているmariadbをアンイン...

CentOS システムのディスク パーティションを拡張する方法

問題/障害/シナリオ/要件Eve-ng の仮想マシン OVA のハードディスクは 38G しかないた...

Linux プロセスが占有するポート番号を表示する 6 つの方法

Linux システム管理者にとって、サービスがポートに正しくバインドされているか、またはポートをリッ...

JavaScript における型の必須および暗黙的な変換の詳細な説明

目次1. 暗黙的な変換二重等号での変換ブール型変換「+」と「-」 2. 強制型変換' ...

dockerでマウントされたディレクトリが読み書きできない問題を解決する

次のコマンドを使用してコンテナを作成し、ローカルの /home/dock/Downloads ディレ...

JS ES の新機能、変数分離割り当て

目次1. 配列の分離割り当て1.1 配列分離割り当てとは何ですか? 1.2 配列分離割り当てに失敗し...

LinuxベースのApacheウェブサイトサービス構成の詳細な説明

オープンソース ソフトウェアである Apache は、最も広く使用されている Web アプリケーショ...

Dockerを使用してシンプルなJava開発およびコンパイル環境を構築する方法の詳細な説明

Java 言語には多くのバージョンがあります。一般的に使用されている Java 8 に加えて、一部の...

シンプルなカルーセル効果を実現するJavaScript

カルーセルとは何ですか?カルーセル: モジュールまたはウィンドウで、コンピューターでマウスをクリック...

Vue の this.$router と this.$route の違いと push() メソッド

公式文書には次のように記されている。ルーターを挿入することで、どのコンポーネントでも this.$r...

Mysql トランザクション分離レベルの読み取りコミットの詳細な説明

MySQL トランザクション分離レベルを表示する mysql> '%isolation...

Dockerを使用してプライベートGitLabを構築する2つの方法

最初の方法: docker インストール1. オープンソース版のイメージを取得する2. 対応するデー...

純粋な CSS で「テキストオーバーフローの切り捨てと省略」を実装するいくつかの方法

私たちの日常的な開発作業では、テキストのオーバーフロー、切り捨て、省略は、考慮する必要がある非常に一...

VueはBaidu Mapsを使用して都市の位置特定を実現

この記事では、参考までに、Baidu Mapsを使用して都市の位置特定を実現するVueの具体的なコー...

mysql 8.0.19 winx64.zip インストール チュートリアル

この記事は参考までにmysql 8.0.19 winx64.zipのインストールチュートリアルを記録...