You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: src/guide/migration/attribute-coercion.md
+25-25Lines changed: 25 additions & 25 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,38 +1,38 @@
1
1
---
2
2
badges:
3
-
- Urgente
3
+
- breaking
4
4
---
5
5
6
-
# Comportamento de Coerção de Atributo <MigrationBadges:badges="$frontmatter.badges" />
6
+
# Comportamento da Coerção de Atributo <MigrationBadges:badges="$frontmatter.badges" />
7
7
8
-
::: Informação:
8
+
::: info Info
9
9
Esta é uma alteração de baixo nível da API interna e não afeta a maioria dos desenvolvedores.
10
10
:::
11
11
12
12
## Visão Geral
13
13
14
14
Aqui está um resumo de alto nível das mudanças:
15
15
16
-
-Abandone o conceito interno de atributos enumerados e trate esses atributos da mesma forma que atributos normais não booleanos
17
-
-**URGENTE**: Não remova mais o atributo se o valor for booleano `false`. Em vez disso, é definido como attr="false". Para remover o atributo, use `null` ou `undefined`.
16
+
-Abandonado o conceito interno de atributos enumerados e tratando esses atributos da mesma forma que atributos normais não booleanos
17
+
-**QUEBRA**: Não remove mais o atributo se o valor for booleano `false`. Em vez disso, é definido como attr="false". Para remover o atributo, use `null` ou `undefined`.
18
18
19
19
Para mais informações, continue lendo!
20
20
21
-
## Sintaxe 2.x
21
+
## Sintaxe v2.x
22
22
23
-
No 2.x, tínhamos as seguintes estratégias para forçar os valores `v-bind`:
23
+
Na v2.x, tínhamos as seguintes estratégias para forçar os valores de`v-bind`:
24
24
25
-
- Para alguns pares de atributo/elemento, Vue está sempre usando o atributo IDL correspondente (propriedade): [como `valores` de `<input>`, `<select>`, `<progress>`, etc](https://github.com/vuejs/vue/blob/bad3c326a3f8b8e0d3bcf07917dc0adf97c32351/src/platforms/web/util/attrs.js#L11-L18).
25
+
- Para alguns pares de atributo/elemento, Vue está sempre usando o atributo IDL (propriedade) correspondente: [como `value` de `<input>`, `<select>`, `<progress>`, etc](https://github.com/vuejs/vue/blob/bad3c326a3f8b8e0d3bcf07917dc0adf97c32351/src/platforms/web/util/attrs.js#L11-L18).
26
26
27
-
- Para "[atributos booleanos](https://github.com/vuejs/vue/blob/bad3c326a3f8b8e0d3bcf07917dc0adf97c32351/src/platforms/web/util/attrs.js#L33-L40)" e [xlinks](https://github.com/vuejs/vue/blob/bad3c326a3f8b8e0d3bcf07917dc0adf97c32351/src/platforms/web/util/attrs.js#L44-L46), o Vue os remove se forem "falsos" ([`undefined`, `null` ou `false`](https://github.com/vuejs/vue/blob/bad3c326a3f8b8e0d3bcf07917dc0adf97c32351/src/platforms/web/util/attrs.js#L52-L54)) e os adiciona de outra forma (veja [aqui](https://github.com/vuejs/vue/blob/bad3c326a3f8b8e0d3bcf07917dc0adf97c32351/src/platforms/web/runtime/modules/attrs.js#L66-L77) e [aqui](https://github.com/vuejs/vue/blob/bad3c326a3f8b8e0d3bcf07917dc0adf97c32351/src/platforms/web/runtime/modules/attrs.js#L81-L85)).
27
+
- Para "[atributos booleanos](https://github.com/vuejs/vue/blob/bad3c326a3f8b8e0d3bcf07917dc0adf97c32351/src/platforms/web/util/attrs.js#L33-L40)" e [xlinks](https://github.com/vuejs/vue/blob/bad3c326a3f8b8e0d3bcf07917dc0adf97c32351/src/platforms/web/util/attrs.js#L44-L46), o Vue os remove se forem "falsos" ([`undefined`, `null` ou `false`](https://github.com/vuejs/vue/blob/bad3c326a3f8b8e0d3bcf07917dc0adf97c32351/src/platforms/web/util/attrs.js#L52-L54)) e os adiciona caso contrário (veja [aqui](https://github.com/vuejs/vue/blob/bad3c326a3f8b8e0d3bcf07917dc0adf97c32351/src/platforms/web/runtime/modules/attrs.js#L66-L77) e [aqui](https://github.com/vuejs/vue/blob/bad3c326a3f8b8e0d3bcf07917dc0adf97c32351/src/platforms/web/runtime/modules/attrs.js#L81-L85)).
28
28
29
-
- Para "[atributos enumerados](https://github.com/vuejs/vue/blob/bad3c326a3f8b8e0d3bcf07917dc0adf97c32351/src/platforms/web/util/attrs.js#L20)" (atualmente `contenteditable`, `draggable` e `spellcheck`), Vue tenta [coagir](https://github.com/vuejs/vue/blob/bad3c326a3f8b8e0d3bcf07917dc0adf97c32351/src/platforms/web/util/attrs.js#L24-L31) eles para string (com tratamento especial para `contenteditable` por enquanto, para corrigir o problema [vuejs/vue#9397](https://github.com/vuejs/vue/issues/9397)).
29
+
- Para "[atributos enumerados](https://github.com/vuejs/vue/blob/bad3c326a3f8b8e0d3bcf07917dc0adf97c32351/src/platforms/web/util/attrs.js#L20)" (atualmente `contenteditable`, `draggable` e `spellcheck`), Vue tenta [coagí-los](https://github.com/vuejs/vue/blob/bad3c326a3f8b8e0d3bcf07917dc0adf97c32351/src/platforms/web/util/attrs.js#L24-L31) para string (com tratamento especial para `contenteditable` por enquanto, para corrigir o problema [vuejs/vue#9397](https://github.com/vuejs/vue/issues/9397)).
30
30
31
31
- Para outros atributos, removemos valores "falsos" (`undefined`, `null` ou `false`) e definimos outros valores como estão (veja [aqui](https://github.com/vuejs/vue/blob/bad3c326a3f8b8e0d3bcf07917dc0adf97c32351/src/platforms/web/runtime/modules/attrs.js#L92-L113)).
32
32
33
33
A tabela a seguir descreve como o Vue coage os "atributos enumerados" de maneira diferente com atributos normais não booleanos:
34
34
35
-
|Vinculando a expressão|`foo` <sup>normal</sup> |`draggable` <sup>enumerado</sup> |
35
+
|Expressão de vinculação|`foo` <sup>normal</sup> |`draggable` <sup>enumerado</sup> |
@@ -43,22 +43,22 @@ A tabela a seguir descreve como o Vue coage os "atributos enumerados" de maneira
43
43
|`attr="foo"`|`foo="foo"`|`draggable="true"`|
44
44
|`attr`|`foo=""`|`draggable="true"`|
45
45
46
-
Podemos ver na tabela acima, a implementação atual força`true` para `'true'`, mas remove o atributo se for `false`. Isso também levou à inconsistência e obrigou os usuários a forçar manualmente os valores booleanos para string em casos de uso muito comuns, como atributos `aria-*` como `aria-selected`,`aria-hidden`, etc.
46
+
Podemos ver na tabela acima, a implementação atual coage`true` para `'true'`, mas remove o atributo se for `false`. Isso também levou à inconsistência e obrigou os usuários a coagir manualmente os valores booleanos para string em casos de uso muito comuns, como atributos `aria-*` como `aria-selected`,`aria-hidden`, etc.
47
47
48
-
## Sintaxe 3.x
48
+
## Sintaxe v3.x
49
49
50
50
Pretendemos abandonar esse conceito interno de "atributos enumerados" e tratá-los como atributos HTML não booleanos normais.
51
51
52
-
- Isso resolve a inconsistência entre os atributos normais não booleanos e "atributos enumerados"
53
-
- Também torna possível usar valores diferentes de `'true'` e `'false'`, ou mesmo palavras-chave ainda por vir, para atributos como `contenteditable`
52
+
- Isso resolve a inconsistência entre os atributos normais não booleanos e “atributos enumerados”
53
+
- Também torna possível usar valores diferentes de `'true'` e `'false'`, ou mesmo palavras-chave ainda por vir, para atributos como `contenteditable`
54
54
55
-
Para atributos não booleanos, o Vue irá parar de removê-los se eles forem `falsos` e forçá-los a serem `'falsos'`.
55
+
Para atributos não booleanos, o Vue irá parar de removê-los se eles forem `false` e irá coagí-los a serem `'false'`.
56
56
57
57
- Isso resolve a inconsistência entre `true` e `false`, e torna a saída dos atributos `aria-*` mais fácil
58
58
59
59
A tabela a seguir descreve o novo comportamento:
60
60
61
-
|Vinculando a expressão|`foo` <sup>normal</sup> |`draggable` <sup>enumerado</sup> |
61
+
|Expressão de vinculação|`foo` <sup>normal</sup> |`draggable` <sup>enumerado</sup> |
@@ -85,28 +85,28 @@ A ausência de um atributo enumerado e `attr="false"` pode produzir diferentes v
85
85
|`draggable`|`draggable`→`false`|
86
86
|`spellcheck`|`spellcheck`→`true`|
87
87
88
-
Para manter o comportamento antigo funcionando, e como estaremos coagindo `false` para `'false'`, no 3.x, os desenvolvedores Vue precisam fazer com que a expressão `v-bind` seja resolvida para `false` ou `'false'` para `contenteditable` e `spellcheck`.
88
+
Para manter o comportamento antigo funcionando, e como estaremos coagindo `false` para `'false'`, na v3.x, os desenvolvedores Vue precisam fazer com que a expressão `v-bind` seja resolvida para `false` ou `'false'` para `contenteditable` e `spellcheck`.
89
89
90
-
No 2.x, os valores inválidos foram forçados a`'true'`para atributos enumerados. Isso geralmente não era intencional e improvável de ser invocado em grande escala. Em 3.x `true` ou `'true'`deve ser explicitamente especificado.
90
+
Na v2.x, os valores inválidos eram coagidos para`'true'`em atributos enumerados. Isso geralmente não era intencional e improvável de ser confiável em grande escala. Na v3.x `true` ou `'true'`devem ser explicitamente especificados.
91
91
92
-
### Coagir `false` para`'false'` em vez de remover o atributo
92
+
### Coagir `false` para`'false'` em vez de remover o atributo
93
93
94
-
No 3.x, `null` ou `undefined` devem ser usados explicitamente para remover um atributo.
94
+
Na v3.x, `null` ou `undefined` devem ser usados para remover explicitamente um atributo.
95
95
96
-
### Comparação entre o comportamento 2.x e 3.x
96
+
### Comparação entre o comportamento v2.x e v3.x
97
97
98
98
<table>
99
99
<thead>
100
100
<tr>
101
101
<th>Atributo</th>
102
-
<th> valor <code>v-bind</code> <sup>2.x</sup></th>
103
-
<th> valor <code>v-bind</code> <sup>3.x</sup></th>
102
+
<th>Valor de <code>v-bind</code> <sup>v2.x</sup></th>
103
+
<th>Valor de <code>v-bind</code> <sup>v3.x</sup></th>
104
104
<th>Saída HTML</th>
105
105
</tr>
106
106
</thead>
107
107
<tbody>
108
108
<tr>
109
-
<td rowspan="3">2.x “Atributos enumerados”<br><small>ou seja: <code>contenteditable</code>, <code>draggable</code> e <code>spellcheck</code>.</small></td>
109
+
<td rowspan="3">“Atributos enumerados” na v2.x<br><small>ou seja: <code>contenteditable</code>, <code>draggable</code> e <code>spellcheck</code>.</small></td>
0 commit comments