diff --git a/src/guide/reusability/custom-directives.md b/src/guide/reusability/custom-directives.md index 1d30d144b..47cfbd49d 100644 --- a/src/guide/reusability/custom-directives.md +++ b/src/guide/reusability/custom-directives.md @@ -1,13 +1,24 @@ # カスタムディレクティブ {#custom-directives} + + ## はじめに {#introduction} コアに設定されているデフォルトのディレクティブのセット(`v-model` や `v-show` など)に加え、Vue では独自のカスタムディレクティブを登録することができます。 @@ -20,14 +31,16 @@ Vue におけるコードの再利用として 2 つの方法を紹介してき ```vue ``` @@ -36,33 +49,31 @@ const vFocus = {
```js -const focus = { - mounted: (el) => el.focus() +const highlight = { + mounted: (el) => el.classList.add('is-highlight') } export default { directives: { - // テンプレート内で v-focus が有効になります - focus + // テンプレート内で v-highlight が有効になります + highlight } } ``` ```vue-html - +

This sentence is important!

```
- +

This sentence is important!

-ページの他の場所をクリックしていないと仮定すると、上の入力欄は自動的にフォーカスされるはずです。このディレクティブはページロード時だけでなく、Vue によって要素が動的に挿入されたときにも機能するため、`autofocus` 属性よりも便利です。 -
-` + + +``` + +
+ +
+ +```js +const focus = { + mounted: (el) => el.focus() +} + +export default { + directives: { + // テンプレート内で v-focus が有効になります + focus + } +} +``` + +```vue-html + +``` + +
+ +このディレクティブは `autofocus` 属性よりも便利です。ページ読み込み時だけでなく、Vue によって要素が動的に挿入されたときにも機能するからです! + +可能な限り `v-bind` のような組み込みディレクティブを使用した宣言的なテンプレートを推奨します。これらはより効率的で、サーバーレンダリングにも適しているためです。 ## ディレクティブフック {#directive-hooks} @@ -214,7 +269,6 @@ app.directive('demo', (el, binding) => { コンポーネントにカスタムディレクティブを使用することは推奨しません。コンポーネントに複数のルートノードがある場合、予期しない動作が発生する可能性があります。 ::: - コンポーネントで使用すると、[フォールスルー属性](/guide/components/attrs)と同様にカスタムディレクティブは常にコンポーネントのルートノードに適用されます。 ```vue-html