Vue.js の watch メソッドと computed メソッドの違いの詳細な例

Vue.js の watch メソッドと computed メソッドの違いの詳細な例

序文

この記事では主に、Vueにおけるwatchとcomputerの違いと、その方法について簡単に説明します。

まずは、これらの違いについてお話しましょう。もちろん見た目も違いますよ~~~、

ハハハハ、冗談はもうやめて、本題に入りましょう。

導入

メソッド: オブジェクトにマウントされる関数。通常は Vue インスタンス自体または Vue コンポーネントです。

computer: プロパティはメソッドのように見えますが、そうではありません。Vue では通常、機能プロパティの変更を追跡するためにデータを使用します。計算プロパティを使用すると、データと同じように機能するプロパティを定義できますが、依存関係に基づいてカスタム ロジックを設定することもできます。計算されたプロパティをデータの別のビューとして考えることができます。

視聴: これらにより、Reactivity System を理解できます。 Vue ストアのプロパティを監視するためのフックをいくつか提供します。変更が発生するたびに何らかの機能を追加したり、特定の変更に応答したりしたい場合は、プロパティを監視して何らかのロジックを適用できます。つまり、観察者の名前は観察対象と一致している必要があります。

これらの数文だけでは、3 つの違いを説明することはできません。例を見てみましょう。

1. 作用機序

computed\watch:watch と computed は、Vue の依存関係追跡メカニズムに基づいています。どちらも、特定のデータ (依存データと呼ばれる) が変更されると、このデータに依存するすべての「関連」データが「自動的に」変更される、つまり、データの変更を実現するために関連する関数が自動的に呼び出される、という処理を試みます。

メソッド: メソッドは関数を定義するために使用されます。当然ですが、実行するには手動で呼び出す必要があります。 watch や computed とは異なり、事前定義された関数を「自動的に実行」しません。

[概要]: メソッドで定義された関数は積極的に呼び出す必要がありますが、watch および computed に関連する関数は、目的を達成するために自動的に呼び出されます。

2. 自然から

1. 関数はメソッド内で定義されており、明らかに「fuc()」のように呼び出す必要があります (関数が fuc であると仮定)。

2. computed は計算された属性であり、実際にはデータ オブジェクト内のデータ属性と同じ型です (使用法の観点から)

例えば:

計算:{
   fullName: 関数 () { return this.firstName + lastName }
} 

アクセスするときは、データにアクセスするときと同じように this.fullName を使用してアクセスします (関数として呼び出さないでください!!)

3. 監視: 監視メカニズム + イベントメカニズムに類似

例えば:

時計:
   firstName: 関数 (val) { this.fullName = val + this.lastName }
}

firstName の変更は、この特別な「イベント」をトリガーするための条件であり、firstName に対応する関数は、イベント発生後に実行されるメソッドと同等です。

3. 時計と計算の比較

時計計算された
1つのデータが複数のデータに影響を与える1つのデータが複数のデータの影響を受ける
blockchainblockchain

ウォッチ計算1 つのデータが複数のデータに影響する1 つのデータが複数のデータに影響される

4. メソッドはデータロジックの関係を処理せず、呼び出し可能な関数のみを提供する

watch/computed と比較すると、メソッドはデータ ロジックの関係を処理せず、呼び出し可能な関数のみを提供します。

新しいVue({
  el: '#app',
  テンプレート: '<div><p>{{ say() }}</p></div>',
  メソッド: {
    言う: 関数() {
      「外国で元気にやっています」と返す
    }
  }
})

5. 機能的補完性の観点から方法、監視、計算の関係を見る

多くの場合、computed は、watch やメソッドを使用するときには処理できない状況、または適切に処理されない状況を処理するために使用されます。computed は、メソッド内での繰り返し計算を処理するために使用します。

1. メソッド内の関数は、単なる「正直者」の集まりです。別の親関数がそれを呼び出すと、その結果が同じになる可能性があり、不必要である場合でも、毎回「従順に」実行され、結果が返されます。

2. Computed は「陰謀を企む少年」です。これは、Vue が提供する依存関係追跡システムに基づいています。依存データが変更されない限り、computed は再計算しません。

6. 特定の状況下でのウォッチのコード冗長性の現象を処理し、コードを簡素化するためにcomputedを使用する

要約する

計算された

  1. 計算プロパティの値はデフォルトでキャッシュされます。計算プロパティは、レスポンシブな依存関係に基づいてキャッシュされます。つまり、データで宣言されたデータに基づいて計算されます。
  2. 属性が他の属性から計算される場合、この属性は他の属性に依存し、多対1または1対1であり、通常は計算値を使用します。
  3. 計算プロパティの属性値が関数の場合、デフォルトで get メソッドが使用されます。関数の戻り値はプロパティの属性値です。計算プロパティには get メソッドと set メソッドがあり、データが変更されると set メソッドが呼び出されます。
  4. 計算プロパティは依存関係に基づいてキャッシュされた計算であり、必要な場合にのみ更新されます。

時計

監視機能は 2 つのパラメータを受け取ります。最初のパラメータは最新の値、2 番目のパラメータは入力前の値です。

計算された見る(リスニングプロパティ)
キャッシュをサポートし、依存データが変更されたときにのみ再計算が実行されます。キャッシュをサポートしていないため、データの変更によって対応する操作が直接トリガーされます。
非同期をサポートしていません。計算に非同期操作がある場合は無効であり、データの変更を監視できません。ウォッチは非同期操作をサポートします。

さて、vue.js の watch メソッドと computed メソッドの違いについての記事はこれで終わりです。vue の watch メソッドと computed メソッドの違いについてさらに詳しく知りたい方は、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続きご覧ください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • vue3.0 のウォッチ リスナーの例の詳細な説明
  • Vue2 と Vue3 でウォッチ リスナーを使用する方法
  • Vue の watch と computed の詳細な説明
  • Vuejs のウォッチインスタンス (リスナー) の詳細な説明
  • Vue の watch における、immediate と watch の意味の詳細な説明
  • Vue 2.0 リスナーウォッチ属性コードの詳細な説明
  • VUEウォッチリスナーの基本的な使い方の詳しい説明

<<:  Linux gccコマンドの具体的な使い方

>>:  ローカルの Windows リモート デスクトップから Alibaba Cloud Ubuntu 16.04 サーバーに接続する方法

推薦する

React diffアルゴリズムソースコード分析

目次単一ノード差分単一要素を調整するマルチノード差分調整子配列ノードが移動したかどうかを判断するには...

コードレイン効果を実現するjQueryプラグイン

この記事では、コードレイン特殊効果を実現するためのjQueryプラグインの具体的なコードを参考までに...

ウェブページ作成における絶対パスと相対パスの違い

1. 絶対パスまず、ローカル コンピューターでは、ファイルの絶対パスは、当然、ハード ディスク上でフ...

CSS でリスト スタイル属性を設定する方法 (この記事を読むだけ)

リストスタイルのプロパティHTMLには、順序なしリストと順序ありリストの2種類のリストがあります。仕...

MySQL 圧縮パッケージ版 zip インストール設定方法

圧縮版の記事ではデータの初期化がされていないなどいくつか問題があったため、Windows にインスト...

入力ボックスのプレースホルダーテキストのデフォルトの色を変更する -webkit-input-placeholder メソッド

HTML5 では、入力用のネイティブ プレースホルダー属性が追加されており、これは高度なブラウザでサ...

Linuxでのcrontabの使い方と注意点の詳しい説明

Crontab は定期的な実行を設定するために使用されるコマンドです。そのデーモン プロセスは cr...

Docker ファイルの保存パス、コンテナの起動コマンド操作の取得

コンテナはすでに作成されていますが、その起動パラメータ(データがマウントされる場所)を知る方法 #コ...

Docker 入門インストールチュートリアル (初心者版)

ドクター紹介: Docker はコンテナ関連の技術です。簡単に言うと、さまざまなソフトウェアを実行で...

CSSのoutline-offsetプロパティを使用してプラス記号を実装する

次のような初期コードがあると仮定します。 <!DOCTYPE html> <htm...

mysql5.7.24 バージョンのインストール手順と解凍時に発生した問題の概要

1. ダウンロード参考: 2. D:\MySQL\mysql-5.7.24 などの固定の場所に解凍し...

MySQL ステートメントを使用した簡単な追加、削除、変更、クエリ操作の例

この記事では、例を使用して、MySQL ステートメントを使用して、単純な追加、削除、変更、およびクエ...

Vue で動的パラメータと計算プロパティを使用する方法

1. 動的パラメータ2.6.0 以降では、角括弧で囲まれた JavaScript 式をディレクティブ...

適応型ウェブページを設計および作成する方法

3G の普及により、携帯電話を使ってインターネットにアクセスする人が増えています。モバイル デバイス...

HTMLテキストの一般的なイベントとメソッドの詳細な説明

イベントの説明onactivate: オブジェクトがアクティブ要素として設定されたときに発生します。...