Vue2.x および Vue3.x のカスタム命令の使用方法とフック関数の原理を理解する

Vue2.x および Vue3.x のカスタム命令の使用方法とフック関数の原理を理解する

Vue2.x の使用法

グローバル登録

Vue.directive(ディレクティブ名、{カスタムディレクティブライフサイクル})

部分登録

ディレクティブ: {ディレクティブ名、{カスタムディレクティブのライフサイクル} }

使用

v-命令名: 属性名.modifier="値"

フック機能

bind - カスタム ディレクティブが DOM にバインドされた後に呼び出されます。1 回だけ呼び出されます。注: DOM に追加されるだけで、レンダリングは完了しません。

inserted - カスタム命令が配置されている DOM。親 DOM に挿入された後に呼び出され、レンダリングが完了します (最も重要)

update - 要素は更新されましたが、子要素はまだ更新されていません。このフックが呼び出されます(カスタムディレクティブが配置されているコンポーネントが更新されたときに実行されますが、更新が完了することは保証されません)—>カスタムディレクティブが配置されているコンポーネントに関連します

componentUpdated - コンポーネントとその子コンポーネントが更新された後に実行されます(カスタムディレクティブが配置されているコンポーネントが更新され、子コンポーネントも更新されます)。

—> カスタムコンポーネントに関連する

unbind - バインド解除 (破棄)。(カスタム命令が配置されている DOM が破棄されたときに実行されます)。1 回だけ呼び出されます。

フック関数のパラメータ

注: カスタム指示ではこれを直接使用することはできません

1. el:現在の命令が配置されている DOM 要素。

2. binding:現在の命令の属性、修飾子、値、その他の情報を表すオブジェクトです。価値だけが重要であり、一般的に使用される

arg : 文字列、属性名。たとえば、v-my-directive:foo では、属性名は「foo」です。

modifiers :オブジェクト、すべての修飾子を含むオブジェクト。たとえば、v-my-directive.foo.bar では、修飾子オブジェクトは { foo: true, bar: true } です。

name :v-プレフィックスを除いたディレクティブ名の文字列。

rawName 、文字列、完全なディレクティブ名。たとえば、v-my-directive:foo.bar="1 + 1" の場合、完全なディレクティブ名は v-my-directive:foo.bar="1 + 1" です。

value :任意、ディレクティブバインディングの現在の値。たとえば、v-my-directive="1 + 1" の場合、バインドされた値は 2 です。 (最も重要)

expression : 解析する値または式を表す文字列。たとえば、v-my-directive="1 + 1" の場合、式は "1 + 1" になります。

oldValue : 任意、ディレクティブにバインドされた以前の値。update および componentUpdated フックでのみ使用できます。値が変更されたかどうかに関係なく使用できます。

oldArg :任意、ディレクティブ属性名の以前の値。update および componentUpdated フックでのみ使用可能。値が変更されたかどうかに関係なく使用できます。

3. vnode : 現在のノード情報。現在の命令が配置されているコンポーネントのインスタンスを取得できます。vnode.context - 現在の命令が配置されているインスタンスオブジェクト

4. oldVnode : 以前の仮想ノード。update フックと componentUpdated フックでのみ使用できます。

Vue3.x の使用法

使い方はVue2.xと同じです

グローバル登録

Vue.directive(ディレクティブ名、{カスタムディレクティブライフサイクル})

部分登録

ディレクティブ: {ディレクティブ名、{カスタムディレクティブのライフサイクル} }

使用

v-命令名: 属性名.modifier="値"

プラグインとしてのグローバル登録

ここに画像の説明を挿入

フック機能

Vue2.xと比較して、フック関数が変更されました

最終的な API は次のようになります。

定数MyDirective = {
  created(el, binding, vnode, prevVnode) {}, // beforeMount() を追加 {},
  マウント() {},
  beforeUpdate() {}, // updated() {} を追加,
  beforeUnmount() {}, // unmounted() {} を追加
}

created - 作成後にカスタムディレクティブが配置されるコンポーネント

beforeMount - Vue2.x ではバインドされ、カスタム命令が DOM にバインドされた後に呼び出されます。1 回だけ呼び出されます。注意: DOM に追加されるだけで、レンダリングは完了しません。

mounted - Vue2.x に挿入され、カスタム命令が配置されている DOM が親 DOM に挿入された後に呼び出され、レンダリングが完了する (最も重要)

beforeUpdate - 更新前に呼び出される、カスタム命令が配置されているDOM

updated - Vue2.x ではコンポーネント更新されています

beforeUnmount - 破棄する前に

破壊された後、 unmounted

上記は、Vue2.x および Vue3.x カスタム命令の使用方法とフック関数の原理を理解するための詳細な内容です。Vue2.x および Vue3.x の詳細については、123WORDPRESS.COM の他の関連記事に注目してください。

以下もご興味があるかもしれません:
  • Vueソースコード学習callHookフック関数の詳しい説明
  • vue3 カスタムディレクティブの詳細
  • Vue3.0 カスタム命令(命令)知識の要約
  • vue3 でのカスタムフック関数の使用

<<:  Linuxはsttyを使用して端末の回線設定を表示および変更します。

>>:  Datagrip2020 が MySQL ドライバーのダウンロードに失敗する

推薦する

Vueでドラッグ可能なコンポーネントを実装する方法

この記事では、Vueでドラッグ可能なコンポーネントとドラッグ可能なコンポーネントを実装する方法を参考...

React仮想リストの実装

目次1. 背景2. バーチャルリストとは何か3. 関連概念の紹介4. 仮想リストの実装4.1 ドライ...

Vue は PC カメラを呼び出してリアルタイムで写真を撮る機能を実装します

VueはPCカメラを呼び出してリアルタイムで写真を撮影します。参考までに、具体的な内容は次のとおりで...

パーソナライズされたクリエイティブなウェブサイトデザインの例 (30)

そこで、個性的なスタジオやフリーランスを表現する組み合わせを 30 個選びました。デザインを目立たせ...

6つの珍しいHTMLタグ

まず: <abbr> または <acronym>これら 2 つの記号は同じ意...

Vue でデータコレクターを設計する

目次シナリオ中核問題ステータス監視状態監視の利点国家監視の欠点復興実行のアイデア依存関係の収集要約す...

新しい要素を作成する3つの方法のまとめ

1つ目: テキスト/HTML経由var txt1="<h1>テキスト。<...

nginx のフロントエンドとバックエンドに同じドメイン名を設定する方法

この記事では、主にnginxのフロントエンドとバックエンドに同じドメイン名を設定する方法を紹介し、皆...

MySQL 30軍事ルールの詳細な説明

1. 基本仕様(1)InnoDBストレージエンジンを使用する必要があります。解釈:トランザクション、...

Nginx URL 書き換えメカニズムの原理と使用例

URL 書き換えは、Web サイトの優先ドメインを決定するのに役立ちます。同じリソース ページの複数...

MySQLにおける区切り文字の定義と機能の詳細な説明

MySQL を初めて学ぶときは、区切り文字の本当の目的を理解していないかもしれません。区切り文字は、...

Centos7でglibcをアップグレードするとシステム異常(起動できない)になる場合の解決方法

目次問題の原因:解決:解決:私は Centos7 を使用しています (理論的にはこの方法は Cent...

MySQLデータベースに中国語の文字を保存するときに発生するエラーを解決する方法を教えます

目次1. 遭遇した問題2. 問題を分析する3. 本当の問題4. 解決策5. ソリューション効果1. ...

Linux における mv コマンドの高度な使用例

序文mv コマンドは、move の略語で、ファイルを移動したり、ファイル名を変更したり (ファイルの...

CSS XTHML の記述標準とよくある問題の概要 (ページ最適化)

プロジェクトドキュメントディレクトリDiv+CSS 命名規則 - 4 - Div+css 命名規則 ...