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/composition-api-introduction.md
+37-39Lines changed: 37 additions & 39 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,15 +2,15 @@
2
2
3
3
## Porque API de Composição?
4
4
5
-
::: tip NOTA
5
+
::: tip Nota
6
6
Chegando até esta etapa da documentação, você já deve estar familiarizado com [os fundamentos do Vue](introduction.md) e o [básico sobre componentes](component-basics.md).
7
7
:::
8
8
9
9
<VideoLessonhref="https://www.vuemastery.com/courses/vue-3-essentials/why-the-composition-api"title="Aprenda como a API de Composição funciona em profundidade com o Vue Mastery">Assista a um vídeo gratuito sobre a API de Composição no Vue Mastery</VideoLesson>
10
10
11
11
A criação de componentes Vue nos permite extrair partes repetíveis da interface, juntamente com sua funcionalidade, em partes reutilizáveis de código. Apenas isso já pode levar nossa aplicação bem longe em termos de manutenibilidade e flexibilidade. No entanto, nossa experiência coletiva provou que isso por si só pode não ser suficiente, especialmente quando a aplicação está ficando muito grande - algo como centenas de componentes. Ao lidar com aplicações tão grandes, compartilhar e reutilizar o código torna-se importantíssimo.
12
12
13
-
Vamos imaginar que em nossa aplicação temos uma visão para mostrar uma lista de repositórios de um determinado usuário. Além disso, queremos aplicar recursos de pesquisa e de filtros. O componente que manipula essa visualização pode ser assim:
13
+
Vamos imaginar que em nossa aplicação temos uma tela (_view_) para mostrar uma lista de repositórios de um determinado usuário. Além disso, queremos aplicar recursos de pesquisa e de filtros. O componente que manipula essa visualização pode ser assim:
14
14
15
15
```js
16
16
// src/components/UserRepositories.vue
@@ -48,7 +48,7 @@ export default {
48
48
49
49
Este componente tem várias responsabilidades:
50
50
51
-
1. Obter repositórios para esse nome de usuário de uma API, supostamente externa, e atualizá-los sempre que o usuário mudar;
51
+
1. Obter repositórios para esse nome de usuário de uma API, presumivelmente externa, e atualizá-los sempre que o usuário mudar;
52
52
2. Procurar repositórios usando uma string `searchQuery`; e
53
53
3. Filtrar repositórios usando um objeto `filters`.
54
54
@@ -72,11 +72,11 @@ Agora que já sabemos o **porquê**, podemos chegar ao **como**. Para começar a
72
72
73
73
A nova opção de componente `setup` é executada **antes** do componente ser criado, uma vez que as `props` estão resolvidas, e serve como ponto de entrada para APIs de composição.
74
74
75
-
::: warning
76
-
Como a instância do componente ainda não foi criada quando `setup` é executado, não há `this` dentro da opção `setup`. Isso significa que, com exceção de `props`, você não poderá acessar nenhuma propriedade declarada no componente – **estado local**, **propriedades _computed_** ou **métodos**.
75
+
::: warning Aviso
76
+
Como a instância do componente ainda não foi criada quando `setup` é executado, não há `this` dentro da opção `setup`. Isso significa que, com exceção de `props`, você não poderá acessar nenhuma propriedade declarada no componente – **estado local**, **dados computados** ou **métodos**.
77
77
:::
78
78
79
-
A opção `setup` deve ser uma função que aceita `props` e `context`, sobre os quais falaremos [depois](composition-api-setup.html#arguments). Além disso, tudo o que retornamos de `setup` será exposto ao resto do nosso componente (propriedades _computed_, métodos, _lifecycle hooks_e assim por diante), bem como ao template do componente.
79
+
A opção `setup` deve ser uma função que aceita `props` e `context`, sobre os quais falaremos [depois](composition-api-setup.html#argumentos). Além disso, tudo o que retornamos de `setup` será exposto ao resto do nosso componente (dados computados, métodos, gatilhos de ciclo de vida e assim por diante), bem como ao _template_ do componente.
80
80
81
81
Vamos adicionar `setup` ao nosso componente:
82
82
@@ -105,11 +105,10 @@ Começaremos com as partes mais óbvias:
105
105
106
106
- A lista de repositórios;
107
107
- A função para atualizar a lista de repositórios; e
108
-
- Retornar a lista e a função para que sejam acessíveis por outras opções de componentes.
109
-
108
+
- Retornar a lista e a função para que sejam acessíveis por outras opções de componente.
Este é o nosso ponto de partida, exceto que ainda não está funcionando porque nossa variável `repositories` não é reativa. Isso significa que, da perspectiva do usuário, a lista de repositórios permaneceria vazia. Vamos consertar isso!
130
129
131
-
### Variáveis reativas com `ref`
130
+
### Variáveis Reativas com `ref`
132
131
133
132
No Vue 3.0, podemos tornar qualquer variável reativa em qualquer lugar com uma nova função `ref`, como:
134
133
@@ -158,14 +157,14 @@ Encapsular valores dentro de um objeto pode parecer desnecessário, mas é preci
158
157
159
158
Ter um objeto encapsulado com qualquer valor nos permite passá-lo com segurança por toda a nossa aplicação, sem a preocupação de perder sua reatividade em algum lugar ao longo do caminho.
160
159
161
-
::: tip NOTA
162
-
Em outras palavras, `ref` cria uma **referência reativa** para nosso valor. O conceito de trabalhar com **referências** será usado frequentemente em toda a API de Composição.
160
+
::: tip Nota
161
+
Em outras palavras, `ref` cria uma **Referência Reativa** para nosso valor. O conceito de trabalhar com **Referências** será usado frequentemente em toda a API de Composição.
163
162
:::
164
163
165
164
De volta ao nosso exemplo, vamos criar uma variável `repositories` reativa:
Nós movemos várias partes de nossa primeira preocupação lógica para o método `setup`, bem colocadas próximas umas das outras. O que resta é chamar `getUserRepositories` no `mounted` e configurar um observador para fazer isso sempre que a propriedade `user` mudar.
232
-
233
-
Começaremos com o _lifecycle hook_.
230
+
Nós movemos várias partes de nossa primeira preocupação lógica para o método `setup`, bem colocadas próximas umas das outras. O que resta é chamar `getUserRepositories` no gatilho `mounted` e configurar um observador para fazer isso sempre que a propriedade `user` mudar.
234
231
235
-
### Registro de _Lifecycle Hook_ no `setup`
232
+
Começaremos com o gatilho de ciclo de vida.
236
233
234
+
### Registro de Gatilho de Ciclo de Vida no `setup`
237
235
238
-
Para tornar a API de Composição completa em comparação com a API de opções, também precisamos de uma maneira de registrar _lifecycle hooks_dentro de `setup`. Isso é possível graças a várias novas funções exportadas do Vue. _Lifecycle hooks_na API de Composição têm o mesmo nome da API de opções, mas são prefixados com `on`: ou seja, `mounted` seria parecido com `onMounted`.
236
+
Para tornar a API de Composição completa em comparação com a API de Opções, também precisamos de uma maneira de registrar gatilhos de ciclo de vida dentro de `setup`. Isso é possível graças a várias novas funções exportadas do Vue. Gatilhos de ciclo de vida na API de Composição têm o mesmo nome da API de Opções, mas são prefixados com `on`: ou seja, `mounted` seria parecido com `onMounted`.
239
237
240
-
Essas funções aceitam um retorno de chamada que será executado quando o _hook_ for chamado pelo componente.
238
+
Essas funções aceitam um retorno de chamada (_callback_) que será executado quando o gatilho for chamado pelo componente.
Agora precisamos reagir às mudanças feitas na propriedade `user`. Para isso, usaremos a função independente `watch`.
266
264
267
-
### Reagindo às mudanças com `watch`
265
+
### Reagindo às Mudanças com `watch`
268
266
269
267
Assim como configuramos um observador na propriedade `user` dentro de nosso componente usando a opção `watch`, podemos fazer o mesmo usando a função `watch` importada do Vue. Três argumentos são aceitos:
270
268
271
-
- Uma **referência reativa** ou função `getter` que queremos observar;
272
-
- Um retorno de chamada; ou
269
+
- Uma **Referência Reativa** ou função _getter_ que queremos observar;
Sempre que `counter` é modificado, por exemplo `counter.value = 5`, o `watch` irá disparar e executar o retorno de chamada (segundo argumento) que neste caso irá registrar `'O novo valor do contador é: 5'` em nosso console.
287
285
288
-
**Abaixo está o equivalente da API de opções:**
286
+
**Abaixo está o equivalente na API de Opções:**
289
287
290
288
```js
291
289
exportdefault {
@@ -302,29 +300,29 @@ export default {
302
300
}
303
301
```
304
302
305
-
Para mais detalhes sobre `watch`, consulte nosso [guia aprofundado]().
303
+
Para mais detalhes sobre `watch`, consulte nosso [guia aprofundado](reactivity-computed-watchers.html#watch).
// define um observador na referência reativa para a propriedade `user`
325
+
// define um observador na Referência Reativa para a propriedade `user`
328
326
watch(user, getUserRepositories)
329
327
330
328
return {
@@ -336,11 +334,11 @@ setup (props) {
336
334
337
335
Você provavelmente notou o uso de `toRefs` no topo de nosso `setup`. Isso é para garantir que nosso observador reaja às mudanças feitas na propriedade `user`.
338
336
339
-
Com essas mudanças em vigor, acabamos de mover toda a primeira preocupação lógica para um único lugar. Agora podemos fazer o mesmo com a segunda preocupação - filtrar com base em `searchQuery`, desta vez com uma propriedade computada.
337
+
Com essas mudanças em vigor, acabamos de mover toda a primeira preocupação lógica para um único lugar. Agora podemos fazer o mesmo com a segunda preocupação - filtrar com base em `searchQuery`, desta vez com um dado computado.
340
338
341
-
### Propriedades `computed`independentes
339
+
### Propriedades `computed`Independentes
342
340
343
-
Semelhante a `ref` e `watch`, as propriedades `computed` também podem ser criadas fora de um componente Vue com a função `computed` importada do Vue. Vamos voltar ao nosso contra-exemplo:
341
+
Semelhante a `ref` e `watch`, as dados computados também podem ser criados fora de um componente Vue com a função `computed` importada do Vue. Vamos voltar ao nosso contra-exemplo:
Aqui, a função `computed` retorna uma **referência reativa** de somente leitura na saída do retorno da chamada "tipo getter", passado como o primeiro argumento para `computed`. Para acessar o atributo **value** da variável computada recém-criada, precisamos usar a propriedade `.value` assim como com `ref`.
354
+
Aqui, a função `computed` retorna uma **Referência Reativa** de somente leitura na saída do retorno da chamada "estilo getter", passado como primeiro argumento para `computed`. Para acessar o atributo **value** da variável computada recém-criada, precisamos usar a propriedade `.value` assim como com `ref`.
357
355
358
356
Vamos mover nossa funcionalidade de pesquisa para `setup`:
// define um observador na referência reativa para a propriedade `user`
376
+
// define um observador na Referência Reativa para a propriedade `user`
379
377
watch(user, getUserRepositories)
380
378
381
379
constsearchQuery=ref('')
@@ -530,4 +528,4 @@ export default {
530
528
531
529
E nós terminamos!
532
530
533
-
Lembre-se de que apenas arranhamos a superfície da API de Composição e o que ela nos permite fazer. Para saber mais sobre isso, consulte o guia detalhado.
531
+
Tenha em mente que apenas arranhamos a superfície da API de Composição e o que ela nos permite fazer. Para saber mais sobre isso, consulte o guia detalhado.
0 commit comments