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 サーバーに接続する方法

推薦する

SQL Server の完全バックアップに関する珍しいエラーと解決策

1. エラーの詳細一度、データベース全体のバックアップを手動で実行したときに、次のエラーが発生しまし...

MySQLにおけるrow_numberの実装プロセス

1. 背景一般的に、データ ウェアハウス環境では、row_number 関数を使用して特定のディメン...

HTML テーブルタグチュートリアル (46): テーブルフッタータグ

<tfoot> タグは、テーブル フッターのスタイルを定義するために使用されます。基本構...

中国語フォントの英語名まとめ

CSS の font-family プロパティを使用して中国語フォントを参照する場合、フォントを定義...

ページ内にマーキーとフラッシュが共存する場合の競合解決

競合の主な症状は、FLASH ボタンがジャンプし続け、不安定になり、Web ページの外観と通常のアク...

VueでEchartsチャートの幅と高さの適応を実現する実践

目次1. インストールとインポート2. 手ぶれ補正機能を定義する3. チャートコードを描くinit ...

Linux でファイルを削除するときに「操作は許可されていません」というプロンプトが表示される場合の対処方法

同僚からよく聞かれるのですが、ファイル/ディレクトリを削除すると「操作は許可されていません」というエ...

ドロップダウンメニューを実現するためのHTML+CSS

1. ドロップダウンリストの例コードは次のとおりです。 <!doctypehtml> ...

JavaScriptの信頼性の低い未定義

undefined JavaScript では、値が undefined かどうかを判断したい場合は...

CSSを使用して円形の波効果を実現する

モバイル デバイスでは、金額を表示するために円形の波グラフィックがよく使用されます。最初は、この効果...

Windows 8 での MySQL 5.6.15 のインストールと設定方法のグラフィック チュートリアル

MySQLは私がとても気に入っているデータベースです。今日はWindows 8システムでインストール...

トップに戻るボタンを実装するJavaScript

この記事では、トップに戻るボタンを実装するためのJavaScriptの具体的なコードを参考までに紹介...

Linuxはシェルスクリプトを使用して履歴ログファイルを定期的に削除します

1. ツールディレクトリのファイル構造 [root@www tools]# ツリーツール/ ツール/...

Nginx インストールの詳細なチュートリアル

1. Nginxの簡単な紹介Nginx は、無料のオープンソースの高性能 HTTP サーバーおよびリ...