Skip to content

File tree

1 file changed

+14
-14
lines changed

1 file changed

+14
-14
lines changed

src/guide/migration/attribute-coercion.md

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ badges:
33
- breaking
44
---
55

6-
# 属性強制の振舞い <MigrationBadges :badges="$frontmatter.badges" />
6+
# 属性強制の振る舞い <MigrationBadges :badges="$frontmatter.badges" />
77

88
::: info Info
99
これはローレベルな内部 API の変更であり、ほとんどの開発者には影響しません。
@@ -20,15 +20,15 @@ badges:
2020

2121
## 2.x での構文
2222

23-
2.x では、`v-bind`の値を強制するために以下のような戦略がありました:
23+
2.x では、`v-bind` の値を強制するために以下のような戦略がありました:
2424

2525
- いくつかの属性/要素のペアでは、Vue は常に対応する IDL 属性(プロパティ)を使用します。: [`<input>``<select>``<progress>`における`value`など](https://github.com/vuejs/vue/blob/bad3c326a3f8b8e0d3bcf07917dc0adf97c32351/src/platforms/web/util/attrs.js#L11-L18)
2626

27-
-[ブール属性](https://github.com/vuejs/vue/blob/bad3c326a3f8b8e0d3bcf07917dc0adf97c32351/src/platforms/web/util/attrs.js#L33-L40)」と[xlinks](https://github.com/vuejs/vue/blob/bad3c326a3f8b8e0d3bcf07917dc0adf97c32351/src/platforms/web/util/attrs.js#L44-L46)については、Vue はそれらが"falsy"([`undefined``null``false`](https://github.com/vuejs/vue/blob/bad3c326a3f8b8e0d3bcf07917dc0adf97c32351/src/platforms/web/util/attrs.js#L52-L54))の場合には削除し、それ以外の場合には追加します ([ここ](https://github.com/vuejs/vue/blob/bad3c326a3f8b8e0d3bcf07917dc0adf97c32351/src/platforms/web/runtime/modules/attrs.js#L66-L77)[こちら](https://github.com/vuejs/vue/blob/bad3c326a3f8b8e0d3bcf07917dc0adf97c32351/src/platforms/web/runtime/modules/attrs.js#L81-L85)を見てください)。
27+
-[ブール属性](https://github.com/vuejs/vue/blob/bad3c326a3f8b8e0d3bcf07917dc0adf97c32351/src/platforms/web/util/attrs.js#L33-L40)」と [xlinks](https://github.com/vuejs/vue/blob/bad3c326a3f8b8e0d3bcf07917dc0adf97c32351/src/platforms/web/util/attrs.js#L44-L46) については、Vue はそれらが "falsy" ([`undefined``null``false`](https://github.com/vuejs/vue/blob/bad3c326a3f8b8e0d3bcf07917dc0adf97c32351/src/platforms/web/util/attrs.js#L52-L54)) の場合には削除し、それ以外の場合には追加します ([ここ](https://github.com/vuejs/vue/blob/bad3c326a3f8b8e0d3bcf07917dc0adf97c32351/src/platforms/web/runtime/modules/attrs.js#L66-L77)[こちら](https://github.com/vuejs/vue/blob/bad3c326a3f8b8e0d3bcf07917dc0adf97c32351/src/platforms/web/runtime/modules/attrs.js#L81-L85)を見てください)。
2828

29-
-[列挙された属性](https://github.com/vuejs/vue/blob/bad3c326a3f8b8e0d3bcf07917dc0adf97c32351/src/platforms/web/util/attrs.js#L20)」(現在は`contenteditable``draggable``spellcheck`)については、Vue はそれらを[強制的に](https://github.com/vuejs/vue/blob/bad3c326a3f8b8e0d3bcf07917dc0adf97c32351/src/platforms/web/util/attrs.js#L24-L31)文字列にしようとします ([vuejs/vue#9397](https://github.com/vuejs/vue/issues/9397)を修正するために、`contenteditable`については今のところ特別な扱いをしています)。
29+
-[列挙された属性](https://github.com/vuejs/vue/blob/bad3c326a3f8b8e0d3bcf07917dc0adf97c32351/src/platforms/web/util/attrs.js#L20)」(現在は `contenteditable``draggable``spellcheck`)については、Vue はそれらを[強制的に](https://github.com/vuejs/vue/blob/bad3c326a3f8b8e0d3bcf07917dc0adf97c32351/src/platforms/web/util/attrs.js#L24-L31)文字列にしようとします ([vuejs/vue#9397](https://github.com/vuejs/vue/issues/9397)を修正するために、`contenteditable` については今のところ特別な扱いをしています)。
3030

31-
- 他の属性については、"falsy"な値(`undefined`, `null`, or `false`)は削除し、他の値はそのまま設定します([こちら](https://github.com/vuejs/vue/blob/bad3c326a3f8b8e0d3bcf07917dc0adf97c32351/src/platforms/web/runtime/modules/attrs.js#L92-L113)を見てください)。
31+
- 他の属性については、"falsy" な値(`undefined`, `null`, or `false`)は削除し、他の値はそのまま設定します([こちら](https://github.com/vuejs/vue/blob/bad3c326a3f8b8e0d3bcf07917dc0adf97c32351/src/platforms/web/runtime/modules/attrs.js#L92-L113)を見てください)。
3232

3333
次の表では、Vue が「列挙された属性」を通常の非ブール属性とは異なる方法で強制する方法を説明しています:
3434

@@ -43,20 +43,20 @@ badges:
4343
| `attr="foo"` | `foo="foo"` | `draggable="true"` |
4444
| `attr` | `foo=""` | `draggable="true"` |
4545

46-
上の表からわかるように、現在の実装では`true``'true'`に強制していますが、`false`の場合は属性を削除しています。これはまた、`aria-selected``aria-hidden`といった`aria-*`属性のような非常に一般的なユースケースでも、ユーザーが手動でブール値を文字列に強制する必要があるなど、一貫性に欠けていました。
46+
上の表からわかるように、現在の実装では `true``'true'` に強制していますが、`false` の場合は属性を削除しています。これはまた、`aria-selected``aria-hidden` といった `aria-*` 属性のような非常に一般的なユースケースでも、ユーザーが手動でブール値を文字列に強制する必要があるなど、一貫性に欠けていました。
4747

4848
## 3.x での構文
4949

5050
この「列挙された属性」という内部概念を捨てて、通常の非ブール HTML 属性として扱うつもりです。
5151

5252
- これは、通常の非ブール属性と「列挙された属性」の間の矛盾を解決します。
53-
- また、`'true'``'false'`以外の値や、`contenteditable` のような属性には、これから定義されるキーワードを使用することも可能になります。
53+
- また、`'true'``'false'` 以外の値や、`contenteditable` のような属性には、これから定義されるキーワードを使用することも可能になります。
5454

55-
非ブール属性については、Vue は`false`であれば削除はせず、代わりに`'false'`に強制します。
55+
非ブール属性については、Vue は `false` であれば削除はせず、代わりに `'false'` に強制します。
5656

57-
- これにより、`true``false`の間の矛盾が解消され、`aria-*`属性の出力が容易になります。
57+
- これにより、`true``false` の間の矛盾が解消され、`aria-*` 属性の出力が容易になります。
5858

59-
新しい振舞いについては、以下の表を参照してください:
59+
新しい振る舞いについては、以下の表を参照してください:
6060

6161
| バインディング式 | `foo` <sup>通常の属性</sup> | `draggable` <sup>列挙された属性</sup> |
6262
| ------------------- | --------------------------- | ------------------------------------- |
@@ -77,23 +77,23 @@ badges:
7777

7878
### 列挙された属性
7979

80-
列挙された属性が存在しない場合や`attr="false"`が存在しない場合に、以下のように異なる IDL 属性値(実際の状態を反映した値)が生成されることがあります:
80+
列挙された属性が存在しない場合や `attr="false"` が存在しない場合に、以下のように異なる IDL 属性値(実際の状態を反映した値)が生成されることがあります:
8181

8282
| 列挙された属性の不在 | IDL 属性と値 |
8383
| -------------------- | ------------------------------------ |
8484
| `contenteditable` | `contentEditable` &rarr; `'inherit'` |
8585
| `draggable` | `draggable` &rarr; `false` |
8686
| `spellcheck` | `spellcheck` &rarr; `true` |
8787

88-
これまでの振舞いを維持するために、また、`false``'false'`に強制するために、3.x Vue の開発者は`contenteditable``spellcheck`に対して`v-bind`式を`false`または`'false'`に解決する必要があります。
88+
これまでの振る舞いを維持するために、また、`false``'false'` に強制するために、3.x Vue の開発者は `contenteditable``spellcheck` に対して `v-bind` 式を `false` または `'false'` に解決する必要があります。
8989

90-
2.x では、列挙された属性に対して無効な値を`'true'`に強制的に設定していました。これは通常意図していなかったもので、大規模に利用される可能性は低いと思われます。3.x では、`true`または`'true'`を明示的に指定する必要があります。
90+
2.x では、列挙された属性に対して無効な値を `'true'` に強制的に設定していました。これは通常意図していなかったもので、大規模に利用される可能性は低いと思われます。3.x では、`true` または `'true'` を明示的に指定する必要があります。
9191

9292
### 属性を削除する代わりに `false``'false'` に強制する
9393

9494
3.x では、明示的に属性を削除するには `null` または `undefined` を使用しなければなりません。
9595

96-
### 2.x と 3.x 間の振舞いの比較
96+
### 2.x と 3.x 間の振る舞いの比較
9797

9898
<table>
9999
<thead>

0 commit comments

Comments
 (0)