From c3b92d45a21fadaee065fb78813ff43b19f0dd49 Mon Sep 17 00:00:00 2001 From: Naoki Haba Date: Sat, 28 Sep 2024 01:30:49 +0900 Subject: [PATCH 1/5] docs: fix issue with autofocus on custom directives page --- src/guide/reusability/custom-directives.md | 93 +++++++++++++++++----- 1 file changed, 73 insertions(+), 20 deletions(-) diff --git a/src/guide/reusability/custom-directives.md b/src/guide/reusability/custom-directives.md index 1d30d144b..f1af8a5a3 100644 --- a/src/guide/reusability/custom-directives.md +++ b/src/guide/reusability/custom-directives.md @@ -1,13 +1,23 @@ # カスタムディレクティブ {#custom-directives} + + ## はじめに {#introduction} コアに設定されているデフォルトのディレクティブのセット(`v-model` や `v-show` など)に加え、Vue では独自のカスタムディレクティブを登録することができます。 @@ -20,14 +30,16 @@ Vue におけるコードの再利用として 2 つの方法を紹介してき ```vue ``` @@ -36,33 +48,33 @@ 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 +268,6 @@ app.directive('demo', (el, binding) => { コンポーネントにカスタムディレクティブを使用することは推奨しません。コンポーネントに複数のルートノードがある場合、予期しない動作が発生する可能性があります。 ::: - コンポーネントで使用すると、[フォールスルー属性](/guide/components/attrs)と同様にカスタムディレクティブは常にコンポーネントのルートノードに適用されます。 ```vue-html From cd41e9546a8211c7cdaf1808ef056efc08857f31 Mon Sep 17 00:00:00 2001 From: Naoki Haba Date: Sun, 29 Sep 2024 16:16:45 +0900 Subject: [PATCH 2/5] chore: update CSS for custom directives page --- src/guide/reusability/custom-directives.md | 1 + 1 file changed, 1 insertion(+) diff --git a/src/guide/reusability/custom-directives.md b/src/guide/reusability/custom-directives.md index f1af8a5a3..f7f980c16 100644 --- a/src/guide/reusability/custom-directives.md +++ b/src/guide/reusability/custom-directives.md @@ -12,6 +12,7 @@ const vHighlight = { .vt-doc p.is-highlight { margin-bottom: 0; } + .is-highlight { background-color: yellow; color: black; From aaf3631804929200460789ab228df902990601cb Mon Sep 17 00:00:00 2001 From: Naoki Haba Date: Sun, 29 Sep 2024 16:17:49 +0900 Subject: [PATCH 3/5] docs: remove unnecessary Japanese translation in custom directives page --- src/guide/reusability/custom-directives.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/guide/reusability/custom-directives.md b/src/guide/reusability/custom-directives.md index f7f980c16..11617e65a 100644 --- a/src/guide/reusability/custom-directives.md +++ b/src/guide/reusability/custom-directives.md @@ -71,8 +71,6 @@ export default {

This sentence is important!

-ページの他の場所をクリックしていないと仮定すると、上の入力欄は自動的にフォーカスされるはずです。このディレクティブはページロード時だけでなく、Vue によって要素が動的に挿入されたときにも機能するため、`autofocus` 属性よりも便利です。 -
` + @@ -138,6 +139,7 @@ const vFocus = { const focus = { mounted: (el) => el.focus() } + export default { directives: { // テンプレート内で v-focus が有効になります