Skip to content

Commit c397bf6

Browse files
committed
Review on guide/composition-api-introduction
1 parent 951687f commit c397bf6

File tree

1 file changed

+37
-39
lines changed

1 file changed

+37
-39
lines changed

src/guide/composition-api-introduction.md

Lines changed: 37 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,15 @@
22

33
## Porque API de Composição?
44

5-
::: tip NOTA
5+
::: tip Nota
66
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).
77
:::
88

99
<VideoLesson href="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>
1010

1111
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.
1212

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:
1414

1515
```js
1616
// src/components/UserRepositories.vue
@@ -48,7 +48,7 @@ export default {
4848

4949
Este componente tem várias responsabilidades:
5050

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;
5252
2. Procurar repositórios usando uma string `searchQuery`; e
5353
3. Filtrar repositórios usando um objeto `filters`.
5454

@@ -72,11 +72,11 @@ Agora que já sabemos o **porquê**, podemos chegar ao **como**. Para começar a
7272

7373
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.
7474

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**.
7777
:::
7878

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

8181
Vamos adicionar `setup` ao nosso componente:
8282

@@ -105,11 +105,10 @@ Começaremos com as partes mais óbvias:
105105

106106
- A lista de repositórios;
107107
- 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.
110109

111110
```js
112-
// src/components/UserRepositories.vue função `setup`
111+
// função `setup` de src/components/UserRepositories.vue
113112
import { fetchUserRepositories } from '@/api/repositories'
114113

115114
// dentro do nosso componente
@@ -128,7 +127,7 @@ setup (props) {
128127

129128
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!
130129

131-
### Variáveis reativas com `ref`
130+
### Variáveis Reativas com `ref`
132131

133132
No Vue 3.0, podemos tornar qualquer variável reativa em qualquer lugar com uma nova função `ref`, como:
134133

@@ -158,14 +157,14 @@ Encapsular valores dentro de um objeto pode parecer desnecessário, mas é preci
158157

159158
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.
160159

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.
163162
:::
164163

165164
De volta ao nosso exemplo, vamos criar uma variável `repositories` reativa:
166165

167166
```js
168-
// src/components/UserRepositories.vue função `setup`
167+
// função `setup` de src/components/UserRepositories.vue
169168
import { fetchUserRepositories } from '@/api/repositories'
170169
import { ref } from 'vue'
171170

@@ -228,21 +227,20 @@ export default {
228227
}
229228
```
230229

231-
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.
234231

235-
### Registro de _Lifecycle Hook_ no `setup`
232+
Começaremos com o gatilho de ciclo de vida.
236233

234+
### Registro de Gatilho de Ciclo de Vida no `setup`
237235

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

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

242240
Vamos adicioná-lo à nossa função `setup`:
243241

244242
```js
245-
// src/components/UserRepositories.vue função `setup`
243+
// função `setup` de src/components/UserRepositories.vue
246244
import { fetchUserRepositories } from '@/api/repositories'
247245
import { ref, onMounted } from 'vue'
248246

@@ -264,15 +262,15 @@ setup (props) {
264262

265263
Agora precisamos reagir às mudanças feitas na propriedade `user`. Para isso, usaremos a função independente `watch`.
266264

267-
### Reagindo às mudanças com `watch`
265+
### Reagindo às Mudanças com `watch`
268266

269267
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:
270268

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;
270+
- Um retorno de chamada (_callback_); e
273271
- Opções de configuração opcionais.
274272

275-
**Aqui está um exemplo de como funciona:*
273+
**Aqui está um exemplo de como funciona:**
276274

277275
```js
278276
import { ref, watch } from 'vue'
@@ -285,7 +283,7 @@ watch(counter, (newValue, oldValue) => {
285283

286284
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.
287285

288-
**Abaixo está o equivalente da API de opções:**
286+
**Abaixo está o equivalente na API de Opções:**
289287

290288
```js
291289
export default {
@@ -302,29 +300,29 @@ export default {
302300
}
303301
```
304302

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

307305
**Vamos agora aplicá-lo ao nosso exemplo:**
308306

309307
```js
310-
// src/components/UserRepositories.vue função `setup`
308+
// função `setup` de src/components/UserRepositories.vue
311309
import { fetchUserRepositories } from '@/api/repositories'
312310
import { ref, onMounted, watch, toRefs } from 'vue'
313311

314312
// in our component
315313
setup (props) {
316-
// usa `toRefs` para criar uma referência reativa para a propriedade `user`
314+
// usando `toRefs` para criar uma Referência Reativa para a propriedade `user`
317315
const { user } = toRefs(props)
318316

319317
const repositories = ref([])
320318
const getUserRepositories = async () => {
321-
// atualiza `props.user` para `user.value`, para acessar o valor de referência
319+
// atualiza `props.user` para `user.value`, para acessar o valor da referência
322320
repositories.value = await fetchUserRepositories(user.value)
323321
}
324322

325323
onMounted(getUserRepositories)
326324

327-
// define um observador na referência reativa para a propriedade `user`
325+
// define um observador na Referência Reativa para a propriedade `user`
328326
watch(user, getUserRepositories)
329327

330328
return {
@@ -336,11 +334,11 @@ setup (props) {
336334

337335
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`.
338336

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

341-
### Propriedades `computed` independentes
339+
### Propriedades `computed` Independentes
342340

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:
344342

345343
```js
346344
import { ref, computed } from 'vue'
@@ -353,29 +351,29 @@ console.log(counter.value) // 1
353351
console.log(twiceTheCounter.value) // 2
354352
```
355353

356-
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`.
357355

358356
Vamos mover nossa funcionalidade de pesquisa para `setup`:
359357

360358
```js
361-
// src/components/UserRepositories.vue função `setup`
359+
// função `setup` de src/components/UserRepositories.vue
362360
import { fetchUserRepositories } from '@/api/repositories'
363361
import { ref, onMounted, watch, toRefs, computed } from 'vue'
364362

365363
// no nosso componente
366364
setup (props) {
367-
// usa `toRefs` para criar uma referência reativa para a propriedade `user`
365+
// usando `toRefs` para criar uma Referência Reativa para a propriedade `user`
368366
const { user } = toRefs(props)
369367

370368
const repositories = ref([])
371369
const getUserRepositories = async () => {
372-
// atualiza `props.user` para `user.value`, para acessar o valor de referência
370+
// atualiza `props.user` para `user.value`, para acessar o valor da referência
373371
repositories.value = await fetchUserRepositories(user.value)
374372
}
375373

376374
onMounted(getUserRepositories)
377375

378-
// define um observador na referência reativa para a propriedade `user`
376+
// define um observador na Referência Reativa para a propriedade `user`
379377
watch(user, getUserRepositories)
380378

381379
const searchQuery = ref('')
@@ -530,4 +528,4 @@ export default {
530528

531529
E nós terminamos!
532530

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

Comments
 (0)