Vue の計算プロパティ

Vue の計算プロパティ

序文:

通常、属性はdata内に配置されますが、一部の属性は論理計算の後に取得する必要がある場合があります。そのため、そのような属性を計算属性に変換できます。

例えば:

<div id="例">
  {{ message.split('').reverse().join('') }}
</div>


この時点で、テンプレートは単なる宣言型ロジックではなくなります。ここで必要なのは、変数messageの逆文字列を表示することであると気づくには、しばらくそれを見る必要があります。この反転された文字列をテンプレート内の複数の場所に含める必要がある場合、処理がさらに難しくなります。

したがって、複雑なロジックの場合は、計算プロパティを使用する必要があります。

1. 基本的な例

<div id="アプリ">
  <h2>合計金額: {{totalPrice}}</h2>
</div>
<スクリプト>
  定数vm = 新しいVue({
    el: "#app",
    データ: {
      メッセージ: "こんにちは",
      書籍:
        {名前: 『三国志演義』、価格: 30}、
        {名前:「紅楼夢」、価格:40}、
        {名前:「西遊記」、価格:50}、
        {名前: '水滸伝'、価格: 60}、
      ]、
    },
    計算: {
      // 計算プロパティゲッター
      合計価格: 関数 (){
          結果を 0 にします。
          // `this` は vm インスタンスを参照します for (let book of this.books) {
            結果 += book.price;
          }
          結果を返す
      }
    }
  })
</スクリプト>


結果: 合計金額: 180

ここでは、計算プロパティtotalPriceを宣言します。次に、 for ループを通じて本の合計価格が計算されます。計算する必要のある属性はcomputedに記述されます。

属性には通常、 getset 2 つのメソッドがあります。 get属性値を取得し、 set属性値を設定します。 computedのデフォルトはget attribute です。 vm.totalPricebooks.priceに依存します。本の価格が変わると、計算された属性totalPriceも動的に変更されます。

2. 計算プロパティキャッシュとメソッド

式の中でメソッドを呼び出すことで同じ効果が得られることに気づいたかもしれません。

<div id="アプリ">
  <h2>合計金額: {{getAllPrice()}}</h2>
</div>
<スクリプト>
  定数vm = 新しいVue({
    el: "#app",
    データ: {
      メッセージ: "こんにちは",
      書籍:
        {名前: 『三国志演義』、価格: 30}、
        {名前:「紅楼夢」、価格:40}、
        {名前:「西遊記」、価格:50}、
        {名前: '水滸伝'、価格: 60}、
      ]、
    },
    メソッド: {
      getAllPrice: 関数 () {
        結果を 0 にします。
        // `this` は vm インスタンスを参照します for (let book of this.books) {
          結果 += book.price;
        }
        結果を返す
      }
    },
  })
</スクリプト>

同じ関数を、計算プロパティではなくメソッドとして定義できます。どちらの方法でも最終結果はまったく同じになります。ただし、違いは、計算されたプロパティは、リアクティブな依存関係に基づいてキャッシュされることです。関連するリアクティブ依存関係が変更された場合にのみ再評価されます。つまり、 booksが変更されていない限り、 totalPrice計算プロパティに複数回アクセスすると、関数を再度実行しなくても、以前に計算された結果がすぐに返されます。

計算されたプロパティはキャッシュされる

なぜキャッシュが必要なのでしょうか?巨大な配列を走査し、大量の計算を実行する必要がある、計算コストの高いプロパティAがあるとします。そうすると、 Aに依存する他の計算プロパティが存在する可能性があります。キャッシュがなければ、必然的にAgetter複数回実行してしまいます。キャッシュが必要ない場合は、代わりにメソッドを使用します。

3. 計算プロパティセッター

計算プロパティにはデフォルトではgetterしかありませんが、必要に応じてsetterを提供することもできます。

計算: {
  合計価格:
    取得: 関数 () {
      結果を 0 にします。
      // `this` は vm インスタンスを参照します for (let book of this.books) {
        結果 += book.price;
      }
      結果を返す
    },
    設定: 関数 (newValue) {
      for (let book of this.books){
        本の価格 += 10
      }
    }
  }
}


ここでは、 setメソッドを追加しましたvm.totalPrice=[...]を実行すると、 setterが呼び出され、それに応じて本の合計価格が変更されます。ただし、 set通常は使用されません。

Vue computedプロパティに関するこの記事はこれで終わりです。Vue Vue computedプロパティに関する関連コンテンツをさらにご覧になりたい場合は、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続きご覧ください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Vue 計算プロパティ実装トランスクリプト
  • Vue の計算プロパティとプロパティリスニングについての簡単な説明
  • Vue の計算プロパティの紹介
  • Vueは計算プロパティを使用して動的スライダーの作成を完了します
  • Vue 監視プロパティと計算プロパティ
  • Vue の計算プロパティとデータ取得方法
  • Vue の計算プロパティをご存知ですか?
  • Vueの計算プロパティ名ケースの3つの実装方法

<<:  CSS でインラインブロック要素間のギャップを削除するいくつかの方法の詳細な説明

>>:  MySQL の Like の概念と使用法の説明

推薦する

Vue プロジェクトのパッケージ化、マージ、圧縮により、Web ページの応答速度を最適化します。

目次序文1. リクエスト内容が大きすぎる解決: CDN の紹介リクエストリソースを圧縮する1. HT...

Mysqlクエリ条件で文字列の末尾にスペースがあっても一致しない問題の詳細な説明

1. テーブル構造テーブル人id名前1あなた2あなた(スペース) 3あなた(スペース2つ) 2. ク...

CSS で縦書きテキスト配置を実装する方法 (概要)

HTML でのテキストのデフォルトの配置は水平ですが、特殊な場合にはテキストを垂直に配置する必要が...

js を使用して過去 1 週間、1 か月、3 か月の時間を取得する簡単な例

目次過去1週間の時間を取得する過去1か月の時間を取得する過去3か月分を取得新しい Date() と ...

HTML で JavaScript を使用する

<script> タグHTML5では、スクリプトには次の属性があります: async、d...

Dockerイメージの作成とプロジェクト全体のワンクリックパッケージングとデプロイ

一般的な Dockerfile 命令の紹介命令説明するから新しいイメージが構築される基となるイメージ...

MySQL の列から行への変換、フィールドの結合方法 (必読)

データシート:列から行へ: max(case when then) を使用max---集計関数は最大...

Ubuntuにmysql5.7.10を手動でインストールする

このチュートリアルでは、UbuntuにMySQL 5.7.10を手動でインストールする手順を参考まで...

VueRouterルーティングの詳細な説明

目次vueルーター1. ルーティングの概念を理解する1.1 ルーティングとは何ですか? 1.2. バ...

MySQL 5.7 生成列の使用例の分析

この記事では、例を使用して、MySQL 5.7 で生成された列の使用方法を説明します。ご参考までに、...

LinuxソースコードからTIME_WAITの期間を分析する

目次1. はじめに2. まずLinux環境を紹介しましょう3. TIME_WAIT状態遷移図4. 継...

Linux システムでのユーザー管理の概要

目次1. ユーザーとユーザーグループの重要性1) ユーザーの存在意義2) ユーザーグループの重要性2...

Vueはデータを初期状態にリセットします

場合によっては、データ内のデータを再利用する必要がありますが、データ内のデータはさまざまなフォーム、...

docker のインストールが完了し、bridge-nf-call-iptables が無効であると報告される問題を解決します

Centos マシンで docker のインストールが完了したら、docker info コマンドを...

Dockerのヘルス検出メカニズム

コンテナの場合、最も単純なヘルスチェックはプロセス レベルのヘルスチェックであり、プロセスが稼働して...