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

推薦する

UI を通じて Docker を管理する方法

Docker はますます多くのシナリオで使用されています。コマンドラインツールに慣れていない人にとっ...

CSS で TikTok テキスト揺れエフェクトを実装する例

日々の開発において、フロントエンドの学生はアニメーションやデザインについてよく議論します。デザイナー...

Mysql SSHトンネル接続を使用するための基本的な手順

序文セキュリティ上の理由から、MySQL の root ユーザーはローカルにのみログインでき、外部ネ...

Vue で v-for を更新する方法

ヒント:配列変更メソッドによりv-forが更新され、ページが更新されます。配列を変更しないメソッド:...

CentOS インストール mysql5.7 詳細チュートリアル

この記事では、参考までに、centOSにmysql5.7をインストールする詳細な手順を紹介します。具...

HTML+CSS でハートビートの特殊効果を作成する

今日は、シンプルなハートビート効果を作成します。多くのコードは必要ありません。ボックスを追加し、CS...

MySQL btree インデックスとハッシュ インデックスの違い

MySQL では、ほとんどのインデックス (PRIMARY KEY、UNIQUE、INDEX、FUL...

Vue3を使用してjsで呼び出せるコンポーネントを実装する

目次序文1. 従来のVueコンポーネント1. メインコンポーネントコード: 2. 使用方法3. 成果...

Win10+Ubuntu 20.04 LTS デュアル システム インストール (UEFI + GPT) (画像とテキスト、複数の画像には注意)

Win10 のインストール (すでにインストールされている場合はスキップしてください) win10...

Docker+K8S+GitLab/SVN+Jenkins+Harbor をベースにした継続的インテグレーション配信環境の構築に関する詳細なチュートリアル

目次環境設定の概要1.K8Sとは何ですか? 2. K8S を使用する理由3. K8S を使用する利点...

CSSにおけるマージン値と垂直マージンの重なりについて

平行ボックスの余白 (二重余白の重なり) に関する面接の質問: 1 つのボックスに上余白があり、もう...

vue+drf+サードパーティのスライディング検証コードアクセスの実装

目次1. 背景2. 検証プロセス3. 検証を作成する4. フロントエンドコード4.1 コアjsファイ...

MySQLのイベントスケジューラEVENTを理解する

MySQL のイベント スケジューラ EVENT は、Unix crontab や Windows ...

Vueのハッシュジャンプ原理の詳細な説明

目次ハッシュと履歴の違いハッシュ履歴getCurrentLocation の実装setupListe...

Vue は Ctrip のカルーセル効果を模倣します (スライディング カルーセル、以下は高度に適応)

まずケースを見てみましょう。vue+swiper を使用して実装します。スライドの高さが異なる場合、...