Skip to content

Commit 117c26f

Browse files
committed
Review on guide/migration/attribute-coercion
1 parent 335a1a8 commit 117c26f

File tree

1 file changed

+25
-25
lines changed

1 file changed

+25
-25
lines changed

src/guide/migration/attribute-coercion.md

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,38 @@
11
---
22
badges:
3-
- Urgente
3+
- breaking
44
---
55

6-
# Comportamento de Coerção de Atributo <MigrationBadges :badges="$frontmatter.badges" />
6+
# Comportamento da Coerção de Atributo <MigrationBadges :badges="$frontmatter.badges" />
77

8-
::: Informação:
8+
::: info Info
99
Esta é uma alteração de baixo nível da API interna e não afeta a maioria dos desenvolvedores.
1010
:::
1111

1212
## Visão Geral
1313

1414
Aqui está um resumo de alto nível das mudanças:
1515

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`.
1818

1919
Para mais informações, continue lendo!
2020

21-
## Sintaxe 2.x
21+
## Sintaxe v2.x
2222

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`:
2424

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).
2626

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)).
2828

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)).
3030

3131
- 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)).
3232

3333
A tabela a seguir descreve como o Vue coage os "atributos enumerados" de maneira diferente com atributos normais não booleanos:
3434

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> |
3636
| ------------------- | ----------------------- | --------------------------------- |
3737
| `:attr="null"` | / | `draggable="false"` |
3838
| `:attr="undefined"` | / | / |
@@ -43,22 +43,22 @@ A tabela a seguir descreve como o Vue coage os "atributos enumerados" de maneira
4343
| `attr="foo"` | `foo="foo"` | `draggable="true"` |
4444
| `attr` | `foo=""` | `draggable="true"` |
4545

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.
4747

48-
## Sintaxe 3.x
48+
## Sintaxe v3.x
4949

5050
Pretendemos abandonar esse conceito interno de "atributos enumerados" e tratá-los como atributos HTML não booleanos normais.
5151

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`
5454

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'`.
5656

5757
- Isso resolve a inconsistência entre `true` e `false`, e torna a saída dos atributos `aria-*` mais fácil
5858

5959
A tabela a seguir descreve o novo comportamento:
6060

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> |
6262
| ------------------- | -------------------------- | --------------------------------- |
6363
| `:attr="null"` | / | / <sup>†</sup> |
6464
| `:attr="undefined"` | / | / |
@@ -85,28 +85,28 @@ A ausência de um atributo enumerado e `attr="false"` pode produzir diferentes v
8585
| `draggable` | `draggable` &rarr; `false` |
8686
| `spellcheck` | `spellcheck` &rarr; `true` |
8787

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`.
8989

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.
9191

92-
### Coagir `false` para` 'false'` em vez de remover o atributo
92+
### Coagir `false` para `'false'` em vez de remover o atributo
9393

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.
9595

96-
### Comparação entre o comportamento 2.x e 3.x
96+
### Comparação entre o comportamento v2.x e v3.x
9797

9898
<table>
9999
<thead>
100100
<tr>
101101
<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>
104104
<th>Saída HTML</th>
105105
</tr>
106106
</thead>
107107
<tbody>
108108
<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>
110110
<td><code>undefined</code>, <code>false</code></td>
111111
<td><code>undefined</code>, <code>null</code></td>
112112
<td><i>removido</i></td>

0 commit comments

Comments
 (0)