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リモート接続を有効にする方法

推薦する

elementui での el-cascader カスケードセレクタの実践

目次1. 効果2. メインコード1. 効果機能: インターフェイスから取得したデータを使用してオプシ...

MySQL の昇順および降順データソートの実装

データの昇順、降順ソート1. フィールド名による単一フィールドのソート順機能:どのフィールドを基準に...

フィボナッチ数列のJavaScript出力を実装する方法

目次トピック分析する基本的な解決策基本的な再帰再帰最適化要約するトピック私たちが答えなければならない...

JSは単純なフィルタリングから複数条件のフィルタリングまで配列フィルタリングを実装します

目次単一条件単一データフィルタリング単一条件複数データフィルタリング複数の条件付きデータフィルタリン...

Webフロントエンドスキル概要(個人の実務経験)

1. 今日、ページを作っているときに、矢印を中央に配置する効果に遭遇しました。クリック領域を大きくし...

CSS の子要素の Z インデックスと親要素の兄弟ノードの階層問題を解決する

1. 問題の出現フラット リストを作成しました。リストの一部には、マウスをホバーすると表示されるポッ...

Vue は小数点付きの星評価を実装します

この記事では、小数点付きの星評価を実装するためのVueの具体的なコードを参考までに共有します。具体的...

Linux および Unix サーバーのセキュリティを強化する方法

ネットワーク セキュリティは非常に重要なトピックであり、サーバーはネットワーク セキュリティにおける...

Node.js で Bash スクリプトを書くための究極のソリューション

目次序文zxライブラリ$`コマンド` CD()フェッチ()質問()寝る()スローしない()チョークフ...

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

この記事では、MySQL 5.7.24のインストールと設定のチュートリアルを参考までに紹介します。具...

ウェブデザイナーが持つべき資質と能力

Web デザインは、インターネットの出現後に誕生した新興の周辺産業です。 Web ページは店頭のよう...

NextCloud プライベート クラウド ストレージ ネットワーク ディスクの構築に関する詳細なチュートリアル

Nextcloud は、オープンソースで無料のプライベート クラウド ストレージ ネットワーク ディ...

Reactにおけるフックの一般的な使用法

目次1. フックとは何ですか? 2. フックはなぜ現れるのでしょうか? 3. よく使われるフックは何...

シェルスクリプトは、Docker の半自動コンパイル、パッケージ化、およびリリースアプリケーション操作を構築します。

Docker 公開方法は、DevOps (送信、コンパイル、パッケージ化、リリースなどの一連のイベ...

いくつかの面接の質問を使ってJavaScriptの実行メカニズムを調べる

目次前の単語同期と非同期前菜プレートを追加マクロタスク マイクロタスク約束しましょうタイマーを追加す...