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 ドライバーのダウンロードに失敗する

推薦する

WeChatアプレットはシンプルなチャットルームを実装します

この記事では、WeChatアプレットの具体的なコードを共有し、簡単なチャットルームを実装します。具体...

CSSレイアウトで中央揃えレイアウトを実現する方法

1. 親コンテナーをテーブルに設定し、子をインライン要素に設定します。テキストを表示するサブコンテン...

JavaScript 以外の静的リソースのバンドルの詳細

目次1. パッケージングツールでのカスタムインポート2. ブラウザとバンドラの共通インポート構文3....

iframe を更新する 3 つの方法

コードをコピーコードは次のとおりです。 <iframe src="1.htm&quo...

ウェブサイトがhttpsを有効にした後のSSLのセキュリティ構成と検出

最近のウェブサイトでは SSL を有効にするのが標準となっています。ただし、SSL を設定した後も、...

Dockerデーモンのセキュリティ設定項目の詳細な説明

目次1. テスト環境1.1 CentOS 7をインストールする1.2 Docker CE 19.03...

ウェブデザインとは何か

<br />元の記事: http://www.alistapart.com/articl...

Node.jsで子プロセスを作成する方法

目次導入子プロセスプロセスを非同期的に作成する同期作成プロセス導入Node.js のメイン イベント...

シンプルなドラッグ効果を実現するjs

この記事では、簡単なドラッグ効果を実現するためのjsの具体的なコードを参考までに共有します。具体的な...

Flexレイアウトを使用してdiv内のサブ要素を垂直方向に中央揃えする例

1. Flex は Flexible Box の略で、「柔軟なレイアウト」を意味し、ボックス モデル...

Linux でファイアウォールがオフになっているかどうかを確認する方法

1. サービス方法ファイアウォールのステータスを確認します。 [root@centos6 ~]# サ...

あなたをエキスパートに見せるための 13 個の JavaScript ワンライナー

目次1. ランダムなブール値( true / false )を取得する2. 指定された日付が営業日で...

HTML テーブル マークアップ チュートリアル (5): ライト ボーダー カラー属性 BORDERCOLORLIGHT

表では、左上の境界線の色を個別に定義したり、セルの右下の境界線の色を定義したりできます。これら 2 ...

VMware 仮想マシン (CentOS7 イメージ) を使用して Linux をインストールする

1. VMwareのダウンロードとインストールリンク: https://www.jb51.net/s...

見落とされがちなMETAタグの特殊効果(ページ遷移効果)

Web デザインで js を使用すると、多くのページ効果を実現できますが、HTML タグの META...