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

推薦する

JSは円形のプログレスバーのドラッグとスライドを実装します

この記事の例では、円形のプログレスバーのドラッグアンドスライドを実現するための具体的なJSコードを紹...

MySQL 8.0.15 圧縮版インストール グラフィック チュートリアル

この記事では、参考までにMySQL 8.0.15圧縮版のインストール方法を紹介します。具体的な内容は...

Ubuntu 16.04 で Python 3 を使用して Django プロジェクトを作成し、実行する方法

ステップ1: Djangoプロジェクトを作成するターミナルを開き、書き込みたいプロジェクトのアドレス...

Nest.js パラメータ検証とカスタム戻りデータ形式の詳細な説明

0x0 パラメータ検証Nest.jsでは、パラメータ検証業務のほとんどをパイプライン方式で実装してい...

MySQL データベースを手動および自動でバックアップする 8 つの方法

MySQL は人気のオープンソースデータベース管理システムとして多くのユーザーが利用しています。デー...

Robots.txtの詳細な紹介

robots.txt の基本的な紹介Robots.txt はプレーンテキスト ファイルであり、Web...

Windows で MySQL データベースを別のディスクに移動する

序文今日、MySQL をインストールしたところ、データベース ストレージがデフォルトで C ドライブ...

HTMLタグのデフォルトスタイルの配置

html、address、blockquote、body、dd、div、dl、dt、fieldset...

ブラウザが登録できるイベントの概要

HTML イベント リスト一般イベント: onClick HTML: マウスクリックイベント。主にオ...

CSS3 で六角形の境界線を実装するサンプルコード

一番外側の boxF は 120 度回転し、2 番目の boxS は -60 度回転し、3 番目の ...

Ubuntu 16.04 サーバーで MySQL を設定し、リモート接続を有効にする方法

背景最近、Node.js を勉強しているのですが、クラウド サーバーがあることを思い出しました。しか...

WeChatアプレットの手動および自動追跡の実装の詳細説明(Taro)

どの企業もユーザーベースを拡大したいのであれば、ユーザーの操作データを収集・分析する必要があり、その...

MySQL 5.7.18 バージョンの無料インストール構成チュートリアル

MySQLはインストール版と無料インストール版に分かれていますインストール版の拡張子はmsi、無料イ...

MySQL Innodb ストレージ構造と Null 値の保存の詳細な説明

背景:テーブルスペース: すべての INNODB データはテーブルスペース (共有テーブルスペース)...

Reactはラジオコンポーネントのサンプルコードを実装します

この記事の目的は、最も明確な構造を使用していくつかのコンポーネントの基本機能を実装することです。皆さ...