背景: 需要開発プロセス中に、一部のインターフェースは、ページに表示する必要がある多くのフィールドを含む結果を返します。通常、これらのフィールドは、.vue ファイル内の計算プロパティとしてカプセル化するか、対応するフィールドをデータ内のフィールドに再割り当てして、使いやすさを実現できます。次のように: 計算された(){ カウント1(){ this.targetObj.count1 を返す }, カウント2(){ this.targetObj.count2 を返す }, // ... // これを想像してください。同様のコードを5回または10回書く必要があります} しかし、どちらの方法を使用したとしても、コードの冗長性が大幅に増加し、非常に不便になります。この問題を解決するために、この記事では、冗長なコードを大幅に削減し、データ取得時に統一されたフォールトトレラント処理を実行できる 1. マップ方式vuex の基本的な状態抽出方法は、次のように使用できます。 計算された(){ カウント(){ これを返します。$store.count } } 同時に、 var mapState = normalizeNamespace(関数 (名前空間、状態) { // 指定された属性を保存および取得するオブジェクトを定義します。var res = {}; normalizeMap(states).forEach(function (ref) { var キー = ref.key; var val = ref.val; // 指定されたオブジェクトの指定された属性を取得するメソッドを定義します res[key] = function mapsedState () { var state = this.$store.state; var getters = this.$store.getters; // 名前空間に従って指定されたストアモジュールオブジェクトを検索します if (namespace) { var module = getModuleByNamespace(this.$store, 'mapState', 名前空間); if (!モジュール) { 戻る } 状態 = module.context.state; ゲッター = module.context.getters; } // 名前空間を指定して取得したストアモジュールのプロパティを取得します。戻り値の typeof val === 'function' val.call(this, state, getters) : 状態[値] }; }); // 関数オブジェクトを返す return res }); 2. 応用この考え方に従うと、複雑なオブジェクト内のフィールドを取得する方法を最適化できます。ファクトリー関数は次のように定義されます エクスポート const mapTargetValue = (nameSpace, keyList = [])=>{ 定数結果 = {} // 注意: 返されるメソッドに矢印関数を使用しないでください。そうしないと、このメソッドを取得できなくなります。 // ここでは 2 つの形式の keyList が互換性があります。mapState の属性名変更の使用形式を参照してください。if(Array.isArray(keyList)){ keyList.forEach( キー => 結果[キー] = 関数(){ // ここでは、名前空間オブジェクトを this で直接取得できると仮定します // もちろん、指定されたオブジェクトを取得する複雑さは、コード ロジックによって異なります。 return this[nameSpace][key] || 0 }) }それ以外の場合(keyListのtype=== 'object' && keyList){ for(let key in keyList){ result[keyList[key]] = function(){ return this[nameSpace][key] || 0} } } 結果を返す } このメソッドの使用方法は 計算: { ...mapTargetValue("targetObj", ["count1", "count2"]), ...mapTargetValue("targetObj", { count1: "count3", count2: "count4"}), } これで、vuex での mapState のアイデアの適用に関するこの記事は終わりです。より関連性の高い vuex mapState コンテンツについては、123WORDPRESS.COM で以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後も 123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: HTMLシールドの右クリックメニューと左クリック入力機能の例
>>: Dockerでudpポート番号を指定する問題を解決する
この記事では、例を使用して、MySQL 外部キーの 3 つの関係について説明します。ご参考までに、詳...
このチュートリアルの動作環境: Windows 7 システム、MySQL 8 バージョン、Dell ...
最初のステップ組み込みのパッケージ管理機能で一度削除する yum 削除 nodejs npm -y ...
目次setStateを使用する理由setStateの使用法非同期または同期更新要約するsetStat...
NATこのようにして、仮想マシンのネットワーク カードはホストの VMnet8 に接続されます。この...
目次1. 応答原理の基盤2. コアオブジェクト: Dep と Watcher 3. 依存関係を収集し...
目次まとめ全体的なプロセスフロントエンドページコード検証コードとログイン サービスをリクエストする ...
WeChat 関連サービスをデバッグする場合など、職場のサーバー環境でリモートデバッグを行う必要があ...
CJK は CJK Unified Ideographs の略称で、「中国語、日本語、韓国語の統一表...
1. HTMLハイパーリンクによって開かれるウィンドウのサイズコードをコピーコードは次のとおりです...
1 QPS 計算 (1 秒あたりのクエリ数) MyISAMエンジンベースのDBの場合 MySQL&g...
序文みなさんこんにちは。私は梁旭です。職場では、システムの起動後にスクリプトやサービスを自動的に開始...
目次1. HTTPGET 2. HTTP POSTウェブソケット4. Egretのhttpとwebs...
関連記事:初心者が学ぶ HTML タグ (3)導入された HTML タグは、必ずしも XHTML 仕...
序文データベースのデータを表示すると、文字化けした文字が表示されることがあります。実際、どのようなデ...