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/content/1/pt/part1d.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1023,7 +1023,7 @@ const App = (props) => {
1023
1023
Usar o componente <i>Botao</i> é simples, embora tenhamos que nos certificar de usar os nomes corretos de atributo ao passar props para o componente.
1024
1024
1025
1025

1026
-
_Nota de tradução: ao longo do texto, apresentamos os códigos contendo termos traduzidos para o português, os quais não aparecem na imagem acima, pois esta traz o código escrito com os termos em inglês._
1026
+
<i>Nota dos tradutores: ao longo do texto, apresentamos os códigos contendo termos traduzidos para o português, os quais não aparecem na imagem acima, pois esta traz o código escrito com os termos em inglês.</i>
1027
1027
1028
1028
### Não defina Componentes dentro de Componentes
1029
1029
@@ -1139,7 +1139,7 @@ Se e <i>quando</i> você encontrar uma mensagem de erro
1139
1139
1140
1140
lembre-se do que foi explicado [aqui](/ptbr/part1/introducao_a_biblioteca_react#nao-renderize-objetos).
1141
1141
1142
-
_**Obs.:** o conteúdo dos exercícios foram deixados no idioma original da tradução (inglês) por questões de conveniência, visto a revisão que os mantenedores do curso devem fazer no código enviado ao sistema de avaliação da Universidade de Helsinque. Desta forma, escreva suas aplicações utilizando os mesmos termos usados nas variáveis, componentes, etc que estão em inglês._
1142
+
<i>**Obs.:** o conteúdo dos exercícios foram deixados no idioma original da tradução (inglês) por questões de conveniência, visto a revisão que os mantenedores do curso devem fazer no código enviado ao sistema de avaliação da Universidade de Helsinque. Desta forma, escreva suas aplicações utilizando os mesmos termos usados nas variáveis, componentes, etc que estão em inglês.</i>
Copy file name to clipboardExpand all lines: src/content/2/pt/part2a.md
+40-43Lines changed: 40 additions & 43 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,7 +7,7 @@ lang: ptbr
7
7
8
8
<divclass="content">
9
9
10
-
Antes de começar esta nova parte, vamos revisar alguns dos tópicos que, ano passado, provaram ser difíceis para alguns estudantes.
10
+
Antes de começar esta nova parte, vamos revisar alguns dos tópicos que, ano passado, se provaram difíceis para alguns estudantes.
11
11
12
12
### console.log
13
13
@@ -17,13 +17,13 @@ Paradoxalmente, isso parece ser verdade, mesmo que um programador iniciante prec
17
17
18
18
Quando algo não funciona, não tente adivinhar o que está errado. Em vez disso, faça o log ou use outra forma de depuração.
19
19
20
-
**N.B. (Nota Bene):** Como explicado na Parte 1, ao usar o comando _console.log_ para depuração, não concatene coisas "do jeito Java" com o sinal de adição (+). Em vez de escrever...
20
+
**Obs.:** Como explicado na Parte 1, ao usar o comando _console.log_ para depuração, não concatene coisas "do jeito Java" com o sinal de adição (+). Em vez de escrever
21
21
22
22
```js
23
23
console.log('valor de props é '+ props)
24
24
```
25
25
26
-
... separe os valores a serem impressos com uma vírgula:
26
+
separe os valores a serem impressos com uma vírgula:
27
27
28
28
```js
29
29
console.log('valor de props é', props)
@@ -47,6 +47,7 @@ As instruções para criar atalhos podem ser encontradas [aqui](https://code.vis
47
47
Atalhos úteis pré-prontos também podem ser encontrados como plugins do VS Code, no [marketplace](https://marketplace.visualstudio.com/items?itemName=dsznajder.es7-react-js-snippets).
48
48
49
49
O atalho mais importante é o do comando <em>console.log()</em>, por exemplo, <em>clog</em>. Ele pode ser criado assim:
50
+
50
51
```js
51
52
{
52
53
"console.log": {
@@ -69,19 +70,19 @@ Se operar arrays com operadores funcionais parecer estranho para você, vale a p
69
70
70
71
-[Funções de ordem superior](https://www.youtube.com/watch?v=BMUiFMZr7vk&list=PL0zVEGEvSaeEd9hlmCXrk5yUyqUag-n84)
-[Básicos do método Reduce](https://www.youtube.com/watch?v=Wl98eZpkp-c&t=31s)
73
+
-[Básico do método Reduce](https://www.youtube.com/watch?v=Wl98eZpkp-c&t=31s)
73
74
74
75
### Revisão sobre Gerenciadores de Evento
75
76
76
77
Baseado no curso do ano passado, o gerenciamento de eventos provou ser algo difícil.
77
78
78
-
Vale a pena ler o capítulo de revisão no final da parte anterior — [Revisão sobre Gerência de Eventos](/ptbr/part1/um_estado_mais_complexo_e_depuracao_de_aplicacoes_react#revisao-sobre-gerencia-de-eventos) — caso ainda ache que precise estudar mais sobre o assunto.
79
+
Vale a pena ler o capítulo de revisão no final da parte anterior — [Revisão sobre Gerenciamento de Eventos](/ptbr/part1/um_estado_mais_complexo_e_depuracao_de_aplicacoes_react#revisao-sobre-gerenciamento-de-eventos) — caso ainda ache que precise estudar mais sobre o assunto.
79
80
80
81
A passagem de gerenciadores de eventos para os componentes-filho do componente <i>App</i> levantou algumas questões. Uma pequena revisão sobre o tópico pode ser encontrada [aqui](/ptbr/part1/um_estado_mais_complexo_e_depuracao_de_aplicacoes_react#passando-gerenciadores-de-evento-para-componentes-filho).
81
82
82
83
### Renderização de Coleções
83
84
84
-
**N.B.:** A partir deste momento, os códigos utilizados como exemplo permanecerão no idioma original (inglês), visto que é disponibilizado ao final de cada sessão o repositório onde o código-exemplo pode ser encontrado na íntegra. É muito provável que o estudante se confunda caso os nomes de variáveis, funções, componentes, etc estejam em português, dado que estaria diferente do código disponibilizado no repositório do GitHub, que está em inglês. (nota do tradutor)
85
+
<i>**Nota dos tradutores:** A partir deste momento, os códigos utilizados como exemplo permanecerão no idioma original (inglês), visto que é disponibilizado ao final de cada sessão o repositório onde o código-exemplo pode ser encontrado na íntegra. É muito provável que o estudante se confunda caso os nomes de variáveis, funções, componentes, etc estejam em português, dado que estaria diferente do código disponibilizado no repositório do GitHub, que está em inglês.</i>
85
86
86
87
Faremos neste momento a lógica da aplicação do lado do cliente (navegador), ou o "front-end", em React, para uma aplicação semelhante à aplicação de exemplo da [Parte 0](/ptbr/part0).
87
88
@@ -91,9 +92,6 @@ Comecemos com o seguinte (arquivo <i>App.js</i>):
91
92
constApp= (props) => {
92
93
const { notes } = props
93
94
94
-
// "notes" traduz-se como "notas"
95
-
// "content" traduz-se como "conteúdo"
96
-
97
95
return (
98
96
<div>
99
97
<h1>Notes</h1>
@@ -119,7 +117,6 @@ import App from './App'
119
117
120
118
constnotes= [
121
119
122
-
// "important" traduz-se como "importante"
123
120
124
121
{
125
122
id:1,
@@ -256,42 +253,41 @@ A aplicação contém um array chamado _notes_:
256
253
constnotes= [
257
254
{
258
255
id:1,
259
-
content:'HTML é fácil',
256
+
content:'HTML is easy',
260
257
important:true
261
258
},
262
259
{
263
260
id:2,
264
-
content:'O navegador só pode executar JavaScript',
261
+
content:'Browser can execute only JavaScript',
265
262
important:false
266
263
},
267
264
{
268
265
id:3,
269
-
content:'GET e POST são os métodos mais importantes do protocolo HTTP',
266
+
content:'GET and POST are the most important methods of HTTP protocol',
270
267
important:true
271
268
}
272
269
]
273
270
```
274
271
275
272
Vamos parar por um momento e examinar como o _map_ funciona.
276
273
277
-
Se o código a seguir for adicionado, digamos, ao final do arquivo...
274
+
Se o código a seguir for adicionado, digamos, ao final do arquivo:
278
275
279
276
```js
280
-
// "result" traduz-se como "resultado"
281
277
constresult=notes.map(note=>note.id)
282
278
console.log(result)
283
279
```
284
280
285
281
<i>[1, 2, 3]</i> será impresso no console.
286
-
_map_ (mapear) sempre cria um array novo, cujos elementos foram criados a partir dos elementos do array original por meio do <i>mapping</i> (mapeamento): usa-se a função fornecida como um parâmetro para o método _map_.
282
+
O método _map_ sempre cria um array novo, cujos elementos foram criados a partir dos elementos do array original por meio do <i>mapping</i> (mapeamento): usa-se a função fornecida como um parâmetro para o método _map_.
287
283
288
284
A função é esta:
289
285
290
286
```js
291
287
note=>note.id
292
288
```
293
289
294
-
Que, neste caso, é uma função de seta escrita de forma compacta. A forma completa seria:
290
+
Que, neste caso, é uma _arrow function_ escrita de forma compacta. A forma completa seria:
295
291
296
292
```js
297
293
(note) => {
@@ -301,15 +297,15 @@ Que, neste caso, é uma função de seta escrita de forma compacta. A forma comp
301
297
302
298
A função recebe um objeto "note" como parâmetro e retorna o valor de seu campo <i>id</i>.
303
299
304
-
Se mudarmos a instrução para...
300
+
Se mudarmos a instrução para:
305
301
306
302
```js
307
303
constresult=notes.map(note=>note.content)
308
304
```
309
305
310
-
... vem como resultado um array contendo o conteúdo das notas.
306
+
o resultado será um array contendo as notas.
311
307
312
-
Essa forma está bem parecida com o código React que usamos...
308
+
Essa forma está bem parecida com o código React que usamos:
313
309
314
310
```js
315
311
notes.map(note=>
@@ -319,7 +315,7 @@ notes.map(note =>
319
315
)
320
316
```
321
317
322
-
... do qual gera uma tag <i>li</i> contendo o conteúdo da nota de cada objeto de nota.
318
+
o qual gera uma tag <i>li</i> contendo o conteúdo da nota de cada objeto de nota.
323
319
324
320
Por conta do parâmetro da função passado para o método _map_ —
325
321
@@ -341,7 +337,7 @@ notes.map((note, i) => ...)
341
337
342
338
Quando chamado desta forma, é atribuído ao _i_ o valor do índice da posição no array onde a nota reside.
343
339
344
-
Como tal, uma forma de definir a criação de linhas (row) sem gerar erros é esta:
340
+
Como tal, uma forma de definir a criação de linhas (_row_) sem gerar erros é esta:
Note que o atributo <i>key</i> agora deve ser definido para os componentes <i>Note</i>, e não para as tags <i>li</i> como antes.
411
407
412
-
Uma aplicação React pode ser escrita inteiramente em um único arquivo, mesmo que fazer isso seja, obviamente, nada prático. A prática comum é declarar cada componente em seu próprio arquivo como um <i>módulo ES6</i>.
408
+
Uma aplicação React pode ser escrita inteiramente em um único arquivo, embora fazer isso não seja muito prático. O ideal é declarar cada componente em seu próprio arquivo como um <i>módulo ES6</i>.
413
409
414
-
Estamos utilizando módulos o tempo todo. As primeiras linhas do arquivo <i>index.js</i>...
410
+
Estamos utilizando módulos o tempo todo. As primeiras linhas do arquivo <i>index.js</i>:
415
411
416
412
```js
417
413
importReactDOMfrom"react-dom/client"
418
414
419
415
importAppfrom"./App"
420
416
```
421
417
422
-
... [importam](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import) (import) dois módulos, habilitando-os a serem usados nessa pasta. É importado o módulo <i>react-dom/client</i> para a variável _ReactDOM_ e o módulo que define o componente principal da aplicação é atribuído à variável _App_.
418
+
[importam](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import) dois módulos, habilitando-os a serem usados nessa pasta. É importado o módulo <i>react-dom/client</i> para a variável _ReactDOM_ e o módulo que define o componente principal da aplicação é atribuído à variável _App_.
423
419
424
420
Vamos separar nosso componente <i>Note</i> em um módulo próprio.
425
421
@@ -438,7 +434,7 @@ const Note = ({ note }) => {
438
434
exportdefaultNote
439
435
```
440
436
441
-
A última linha do módulo[exporta](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/export) (exports) o módulo declarado, a variável <i>Note</i>.
437
+
A última linha do código[exporta](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/export) o módulo declarado, a variável <i>Note</i>.
442
438
443
439
Agora, o arquivo que está usando o componente — <i>App.js</i> — pode [importar](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import) o módulo:
444
440
@@ -464,7 +460,7 @@ Módulos têm muitas outras utilidades além de permitir que as declarações de
464
460
465
461
O código atual da aplicação pode ser encontrado [neste repositório GitHub](https://github.com/fullstack-hy2020/part2-notes/tree/part2-1).
466
462
467
-
Note que a branch (ramo ou ramificação) <i>main</i> do repositório contém o código para uma versão posterior da aplicação. O código atual está na branch [part2-1](https://github.com/fullstack-hy2020/part2-notes/tree/part2-1):
463
+
Note que a branch <i>main</i> do repositório contém o código para uma versão posterior da aplicação. O código atual está na branch [part2-1](https://github.com/fullstack-hy2020/part2-notes/tree/part2-1):
468
464
469
465

470
466
@@ -512,7 +508,7 @@ const App = () => {
512
508
// ...
513
509
}
514
510
515
-
console.log('A aplicação está funcionando...') // highlight-line
511
+
console.log('App works...') // highlight-line
516
512
517
513
return (
518
514
// ..
@@ -570,6 +566,7 @@ Adicionei este capítulo ao material após a resposta do modelo da próxima perg
570
566
Antes de fazer os exercícios, deixe-me lembrá-lo do que havia jurado no final da parte anterior.
571
567
572
568
Programar é difícil, e é por isso que eu usarei todos os meios possíveis para ser mais fácil:
569
+
573
570
- Eu manterei meu Console do navegador aberto o tempo todo;
574
571
- Eu vou progredir aos poucos, passo a passo;
575
572
- Eu escreverei muitas instruções _console.log_ para ter certeza de que estou entendendo como o código se comporta e para me ajudar a identificar os erros;
@@ -590,7 +587,7 @@ Lembre-se: envie **todos** os exercícios de uma parte **de uma única vez**; is
590
587
591
588
**AVISO**: "create-react-app" transformará automaticamente seu projeto em um repositório git, a menos que você crie sua aplicação dentro de um repositório git já existente. **Você muito provavelmente não quer que cada um de seus projetos seja um repositório separado**, então basta executar o comando _rm -rf .git_ na raiz de sua aplicação para aplicar as modificações.
592
589
593
-
**N.B.:** o conteúdo dos exercícios foram deixados no idioma original da tradução (inglês) por questões de conveniência, visto a revisão que os mantenedores do curso devem fazer no código enviado ao sistema de avaliação da Universidade de Helsinque. Desta forma, escreva suas aplicações utilizando os mesmos termos usados nas variáveis, componentes, etc que estão em inglês.
590
+
**Obs.:** o conteúdo dos exercícios foram deixados no idioma original da tradução (inglês) por questões de conveniência, visto a revisão que os mantenedores do curso devem fazer no código enviado ao sistema de avaliação da Universidade de Helsinque. Desta forma, escreva suas aplicações utilizando os mesmos termos usados nas variáveis, componentes, etc que estão em inglês.
594
591
595
592
<h4>2.1: Course information — 6º passo</h4>
596
593
@@ -604,20 +601,20 @@ Vamos modificar o componente <i>App</i> desta maneira:
604
601
constApp= () => {
605
602
constcourse= {
606
603
id:1,
607
-
name:'Desenvolvimento de aplicação Half Stack',
604
+
name:'Half Stack application development',
608
605
parts: [
609
606
{
610
-
name:'Fundamentos do React',
607
+
name:'Fundamentals of React',
611
608
exercises:10,
612
609
id:1
613
610
},
614
611
{
615
-
name:'Usando props para passar dados',
612
+
name:'Using props to pass data',
616
613
exercises:7,
617
614
id:2
618
615
},
619
616
{
620
-
name:'Estado de um componente',
617
+
name:'State of a component',
621
618
exercises:14,
622
619
id:3
623
620
}
@@ -648,7 +645,7 @@ Desta forma, o componente <i>Course</i> conterá os componentes definidos na par
648
645
649
646
O resultado da página pode ficar assim, por exemplo:

652
649
653
650
Você ainda não precisa da soma do número de exercícios.
654
651
@@ -666,25 +663,25 @@ Mostre também a soma (ou total) dos exercícios do curso.
666
663
667
664
Se você ainda não o fez, calcule a soma dos exercícios com o método de array [reduce](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce) (reduzir).
668
665
669
-
**Dica I:** quando seu código fica assim...
666
+
**Dica I:** quando seu código fica assim:
670
667
671
668
```js
672
669
consttotal=
673
670
parts.reduce((s, p) => someMagicHere)
674
671
```
675
672
676
-
... e ao mesmo tempo que não funciona, vale a pena usar o <i>console.log</i>, o que requer que a função de seta seja escrita em sua forma mais longa:
673
+
e ao mesmo tempo que não funciona, vale a pena usar o <i>console.log</i>, o que requer que a função de seta seja escrita em sua forma mais longa:
677
674
678
675
```js
679
676
consttotal=parts.reduce((s, p) => {
680
-
console.log('o que está acontecendo', s, p)
677
+
console.log('what is happening', s, p)
681
678
return someMagicHere
682
679
})
683
680
```
684
681
685
682
**Não está funcionando? :** Pesquise na internet como `reduce` é usado em um **Array de Objetos**.
686
683
687
-
**Dica II:** Existe um [plugin para o VS Code](https://marketplace.visualstudio.com/items?itemName=cmstead.js-codeformer) que altera automaticamente as funções de seta da forma curta para sua forma mais longa e vice-versa.
684
+
**Dica II:** Existe um [plugin para o VS Code](https://marketplace.visualstudio.com/items?itemName=cmstead.js-codeformer) que altera automaticamente as _arrow functions_ da forma curta para sua forma mais longa e vice-versa.
688
685
689
686

690
687
@@ -696,21 +693,21 @@ Vamos estender nossa aplicação para que permita um número <i>arbitrário</i>
0 commit comments