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

推薦する

知らないかもしれないLinuxのファイル権限管理方法

なぜ権限管理が必要なのでしょうか? 1. コンピュータ リソースは限られているため、コンピュータ リ...

JavaScriptのクローン作成についての簡単な説明

目次1. 浅いクローニング2. ディープクローニング1. 浅いクローニング浅いクローンでは配列やオブ...

vue+elementui+vuex+sessionStorage を使用して履歴タグ メニューを実装するためのサンプル コード

一般的には、左側にメニューがあった後、ページの上部に履歴タブ メニューを追加する必要があります。他の...

HTML タグ マーキーを使用してスクロール効果を実現する簡単な方法 (必読)

ページの自動スクロール効果は JavaScript で実現できますが、今日偶然、JS 制御なしでさま...

Zabbixを使用してMySQLを監視する方法

Zabbix 導入ドキュメントzabbix導入後zabbixエージェントの操作1. MySQLを監視...

Vue の親子コンポーネントの値転送と一方向データフローの問題の詳細な説明

目次序文1. 親コンポーネントが子コンポーネントに値を渡す2. サブコンポーネントのprops型制約...

Ubuntuのインストール Matlab2020b の詳細なチュートリアルとリソース

目次1. リソースファイル2. インストール2.1 詳細な手順2.1.1 ディスクイメージのマウント...

VMware 仮想マシンに CentOS と Qt をインストールするチュートリアル図

VMware のインストールパッケージのインストールダウンロードアドレス: https://www....

MySQLがlocalhost経由でデータベースに接続できない問題に対する完璧な解決策

問題:あるサーバー上の PHP プログラムは、localhost アドレス経由でデータベースに接続で...

Windows 10 の Docker で countly-server を展開して実行するプロセス

私は最近countlyに触れて、慣れてきました。私は、必要に応じてcountlyのクラッシュプラグイ...

HTMLはシンプルで美しいログインページを作成します

まずは見てみましょう。 HTML ソースコード: XML/HTML コードコンテンツをクリップボード...

mysql バックアップ スクリプトを作成し、7 日間保存します。

スクリプトの要件: MySQL データベースを毎日バックアップし、スクリプトを 7 日間保存します。...

Linuxシステムにおける重要なサブディレクトリの問題について話す

/etc/fstabパーティション/ディスクを自動的にマウントし、マウントするパーティション/デバイ...

JavaScript配列の一般的なメソッドの概要

目次1. JavaScriptで配列を作成する方法2. 配列メソッドの概要3. 方法の詳細な説明1....