Vueカスタム命令の詳細な説明

Vueカスタム命令の詳細な説明

Vueカスタムディレクティブ

カスタムディレクティブ

ページが読み込まれたときに要素にフォーカスを当てるために使用されるグローバルディレクティブv-focusを登録します。

<!DOCTYPE html>
<html>
	<ヘッド>
		<メタ文字セット="utf-8">
		<タイトル></タイトル>
		<script src="../js/vue.js"></script>
	</head>
	<本文>
		<div id="アプリ">
			<v-fo を入力>
		</div>
		<スクリプト>
            // カスタムディレクティブを登録する Vue.directive('fo',{
				挿入:function(el){
                    // 要素にフォーカス el.focus()
				}
			})
			新しいVue({
				el: '#app'
			})
		</スクリプト>
	</本文>
</html>
 

画像-20211112151122161

インターフェースを開き、入力ボックスに直接カーソルを置きます

フック機能

ディレクティブ定義関数は、いくつかのフック関数 (オプション) を提供します。

  • bind : ディレクティブが最初に要素にバインドされるときに 1 回だけ呼び出されます。このフック関数は、バインド中に 1 回実行される初期化アクションを定義するために使用できます。
  • inserted : バインドされた要素が親ノードに挿入されたときに呼び出されます (親ノードが存在する場合に呼び出すことができますが、必ずしもドキュメント内にあるとは限りません)。
  • update : バインドされた値が変更されたかどうかに関係なく、バインドされた要素が配置されているテンプレートが更新されたときに呼び出されます。更新前後のバインディング値を比較することで、不要なテンプレートの更新を無視できます。
  • componentUpdated : バインドされた要素のテンプレートが更新サイクルを完了したときに呼び出されます。
  • unbind : ディレクティブが要素からアンバインドされたときに 1 回だけ呼び出されます。

フック関数のパラメータは主に以下のとおりです。

  • el : 命令がバインドされる要素。これを使用して DOM を直接操作できます。
  • binding : 以下のプロパティを含むオブジェクト
  • name : v- プレフィックスを除いたディレクティブの名前。
  • value : ディレクティブのバインディング値。たとえば、v-my-directive="1+1" の場合、値は 2 になります。
  • oldValue : ディレクティブにバインドされた以前の値。値が変更されたかどうかに関係なく、update フックと componentUpdated フックでのみ使用できます。
  • expression : バインディング値の式または変数名。たとえば、v-my-directive="1+1" の場合、式の値は "1+1" になります。
  • arg : ディレクティブに渡されるパラメータ。たとえば、v-my-directive:foo の場合、arg の値は "foo" です。
  • modifiers : 修飾子を含むオブジェクト。たとえば、 v-my-directive.foo.bar の場合、修飾子オブジェクト modifiers の値は {foo: true, bar: true} になります。
  • vnode : Vue コンパイルによって生成される仮想ノード。
  • oldVnode : 以前の仮想ノード。update フックと componentUpdated フックでのみ使用できます。

出力関連属性

<!DOCTYPE html>
<html>
	<ヘッド>
		<メタ文字セット="utf-8">
		<タイトル></タイトル>
		<script src="../js/vue.js"></script>
	</head>
	<本文>
		<div id="app" v-hh:abc="mess">
		</div>
		<スクリプト>
			Vue.directive('hh',{
				バインド: 関数(el,binding,vnode){
					var s = JSON.stringify
					el.innerHTML = 'name:'+s(binding.name)+'<br>'+
					'値:'+s(binding.value)+'<br>'+
					'式:'+s(binding.expression)+'<br>'+
					'引数:'+s(binding.arg)+'<br>'+
					'修飾子:'+s(binding.modifiers)+'<br>'+
					'vnode キー:'+Object.keys(vnode).join(',')
				}
			})
			新しいVue({
				el:'#app',
				データ:{
					混乱:'abc'
				}
			})
		</スクリプト>
	</本文>
</html>
 

画像-20211112163153199

アプリケーション例

<!DOCTYPE html>
<html>
	<ヘッド>
		<メタ文字セット="utf-8">
		<タイトル></タイトル>
		<script src="../js/vue.js"></script>
	</head>
	<本文>
		<div id="アプリ">
			<div v-hh="{text:'123',c:'blue'}"></div>
		</div>
		<スクリプト>
			Vue.directive('hh',function(el,binding){
				el.innerHTML=バインディング値テキスト
				el.style.color=バインディング値.c
			})
			新しいVue({
				el:'#app'
			})
		</スクリプト>
	</本文>
</html>
 

画像-20211112164831459

要約する

この記事はこれで終わりです。皆さんのお役に立てれば幸いです。また、123WORDPRESS.COM のその他のコンテンツにも注目していただければ幸いです。

以下もご興味があるかもしれません:
  • vue グローバルカスタム命令とローカルカスタム命令の使用
  • 要素のドラッグを実装するための Vue カスタム命令に関する詳細なコード
  • Vue3のカスタムディレクティブの書き方
  • Vue の 4 つのカスタム命令の説明と使用例
  • vue3 カスタムディレクティブの詳細
  • Vueカスタムディレクティブとその共通フック関数の説明

<<:  ホームページのデザインはウェブデザイナーのレベルを最もよく反映する

>>:  異なるブラウザ間で互換性のあるテキスト配置を実現する CSS

推薦する

ビジネス HTML メール作成に関する提案

許可ベースの電子メール マーケティングにより、マーケティングとプロモーションのコストを大幅に削減でき...

MySQLカスタム関数の簡単な使用例

この記事では、例を使用して MySQL カスタム関数の使用方法を説明します。ご参考までに、詳細は以下...

フォント宝庫 50 種類の素晴らしい無料英語フォントリソース パート 2

デザイナーは独自のフォント ライブラリを持っているため、プロジェクトの設計時にすぐに使用できます。今...

CSS を使用して等アスペクト比のアダプティブ コンテナを実装する方法

最近、モバイル ページを開発しているときに、ページの幅が 100% の場合、高さは幅の半分になり、携...

VUE+Canvasはデスクトップピンボールブロック破壊ゲームのサンプルコードを実装します

誰もがピンボールやレンガ崩しのゲームをプレイしたことがあるでしょう。左と右のキーを使用して、下にある...

JS でオブジェクト プロパティを簡単にトラバースするいくつかの方法

目次1. 自己列挙可能なプロパティ2. Object.values()はプロパティ値を返します3. ...

Linux を使用して時間指定ファイルが占有するディスク容量を計算する方法

スケジュールされたタスク エディターを開きます。Cent は、デフォルトで vim を使用して直接開...

CSSポジションの5つの異なる値の使い方の詳細な説明

位置プロパティposition プロパティは、要素に使用する配置方法のタイプ (静的、相対的、固定、...

Win10 での MySQL 5.7 の詳細なインストールと設定のチュートリアル

1. MySQL 5.7を解凍する2. 新しい設定ファイルmy.iniを作成し、 D:\Free\m...

sed コマンドを使用して文字列を置換する Linux チュートリアル

文字列を置き換えるには、次の形式を使用する必要があります。 $ sed s/置換対象文字列/置換文字...

Docker ベースの MySQL マスタースレーブ レプリケーションを実装する方法

序文MySQL マスター/スレーブ レプリケーションは、アプリケーションの高パフォーマンスと高可用性...

Vueのフロントエンドシステムとフロントエンドとバックエンドの分離の詳細な説明

目次概要フロントエンド知識システムフロントエンドの3つの要素プレゼンテーション層 (CSS)動作レイ...

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

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

Mysql 5.7.19 無料インストール バージョンで遭遇した落とし穴 (コレクション)

1. 公式ウェブサイトから 64 ビットの zip ファイルをダウンロードします。 2. インスト...