Skip to content

Commit 68a9adc

Browse files
committed
Complete ptbr text review for part2b
1 parent 76e4dc7 commit 68a9adc

File tree

1 file changed

+30
-43
lines changed

1 file changed

+30
-43
lines changed

src/content/2/pt/part2b.md

Lines changed: 30 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,6 @@ import Note from './components/Note'
1717

1818
const App = (props) => { // highlight-line
1919
const [notes, setNotes] = useState(props.notes) // highlight-line
20-
/*
21-
"notes" traduz-se como "notas"
22-
"setNotes" traduz-se, grosso modo, como "definirNotas"
23-
- Versão reduzida: "defNotas"
24-
*/
2520

2621
return (
2722
<div>
@@ -50,7 +45,7 @@ const App = (props) => {
5045

5146
Também podemos usar o "React Developer Tools" para ver o que realmente está acontecendo:
5247

53-
![](../../images/2/30.png)
48+
![navegador mostrando a janela ](../../images/2/30.png)
5449

5550
Se quiséssemos inicializá-la com uma lista vazia de notas, definiríamos o valor inicial como um array vazio e, como as props não seriam utilizadas, poderíamos omitir o parâmetro <em>props</em> da definição da função:
5651

@@ -72,9 +67,8 @@ const App = (props) => {
7267

7368
// highlight-start
7469
const addNote = (event) => {
75-
//"addNote" traduz-se, grosso modo, como "adicionarNota"
7670
event.preventDefault()
77-
console.log('botão clicado', event.target)
71+
console.log('button clicked', event.target)
7872
}
7973
// highlight-end
8074

@@ -102,21 +96,21 @@ Adicionamos a função _addNote_ como um gerenciador de evento ao elemento de fo
10296
Usamos o método discutido na [Parte 1](/en/part1/component_state_event_handlers#event-handling) para definir nosso gerenciador de evento:
10397

10498
```js
105-
const addNote = (evento) => {
106-
evento.preventDefault()
107-
console.log('botão clicado', evento.target)
99+
const addNote = (event) => {
100+
event.preventDefault()
101+
console.log('button clicked', event.target)
108102
}
109103
```
110104

111-
O parâmetro <em>event</em> é o [event](https://reactjs.org/docs/handling-events.html) (evento) que aciona a chamada para a função gerenciadora de evento:
105+
O parâmetro <em>event</em> é o [evento](https://reactjs.org/docs/handling-events.html) que aciona a chamada para a função gerenciadora de evento:
112106

113-
O gerenciador de evento chama imediatamente o método <em>event.preventDefault()</em>, o que "impede a ação padrão" (prevents the default action) de enviar um formulário. A ação padrão causaria, [entre outras coisas](https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement/submit_event), a recarga da página.
107+
O gerenciador de evento chama imediatamente o método <em>event.preventDefault()</em>, o que "impede a ação padrão" de enviar um formulário. A ação padrão causaria, [entre outras coisas](https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement/submit_event), o recarregamento da página.
114108

115-
O alvo do evento armazenado em _event.target_ é registrado no console:
109+
O alvo (target) do evento armazenado em _event.target_ é registrado no console:
116110

117111
![console mostrando o botão clicado com o objeto formulário](../../images/2/6e.png)
118112

119-
O alvo neste caso é o formulário que definimos em nosso componente.
113+
O <i>target</i> neste caso é o formulário que definimos em nosso componente.
120114

121115
Como acessamos os dados armazenados no elemento <i>input</i> do formulário?
122116

@@ -131,17 +125,13 @@ const App = (props) => {
131125
const [notes, setNotes] = useState(props.notes)
132126
// highlight-start
133127
const [newNote, setNewNote] = useState(
134-
/*
135-
"newNote" traduz-se como "novaNota"
136-
"setNewNote" traduz-se, grosso modo, como "defNovaNota"
137-
*/
138-
'uma nova nota...'
128+
'a new note...'
139129
)
140130
// highlight-end
141131

142132
const addNote = (event) => {
143133
event.preventDefault()
144-
console.log('botão clicado', event.target)
134+
console.log('button clicked', event.target)
145135
}
146136

147137
return (
@@ -165,21 +155,21 @@ O texto do espaço reservado armazenado como o valor inicial do estado <em>newNo
165155

166156
![console exibindo erro de valor fornecido para prop sem onchange](../../images/2/7e.png)
167157

168-
A partir do momento que atribuímos um pedaço do estado do componente <i>App</i> como o atributo <i>value</i> do elemento de entrada (input element), o componente <i>App</i> passou a controlar o comportamento do elemento de entrada.
158+
A partir do momento em que atribuímos um pedaço do estado do componente <i>App</i> como o atributo <i>value</i> do elemento de entrada (input element), o componente <i>App</i> passou a controlar o comportamento do elemento de entrada.
169159

170160
Para habilitar a edição do elemento de entrada, precisamos registrar um <i>gerenciador de evento</i> que sincroniza as mudanças feitas na entrada com o estado do componente:
171161

172162
```js
173163
const App = (props) => {
174164
const [notes, setNotes] = useState(props.notes)
175165
const [newNote, setNewNote] = useState(
176-
'uma nova nota...'
166+
'a new note...'
177167
)
178168

179169
// ...
180170

181171
// highlight-start
182-
const handleNoteChange = (event) => { // ou "gerEntradaDeNota"
172+
const handleNoteChange = (event) => {
183173
console.log(event.target.value)
184174
setNewNote(event.target.value)
185175
}
@@ -251,9 +241,9 @@ const addNote = (event) => {
251241
}
252242
```
253243

254-
Primeiramente, criamos um novo objeto para a nota (variável que cria as notas com suas propriedades) chamada <em>noteObject</em> (ou "objetoNota") que receberá seu conteúdo do estado <em>newNote</em> do componente. O identificador único <i>id</i> é gerado com base no número total de notas. Este método funciona para a nossa aplicação, já que as nossas notas nunca são excluídas. Com a ajuda da função <em>Math.random()</em>, a nossa nota tem 50% de chance de ser marcada como importante.
244+
Primeiramente, criamos um novo objeto para a nota (variável que cria as notas com suas propriedades) chamada <em>noteObject</em> que receberá seu conteúdo do estado <em>newNote</em> do componente. O identificador único <i>id</i> é gerado com base no número total de notas. Este método funciona para a nossa aplicação, já que as nossas notas nunca são excluídas. Com a ajuda da função <em>Math.random()</em>, a nossa nota tem 50% de chance de ser marcada como importante.
255245

256-
A nova nota é adicionada à lista de notas usando o método de array [concat](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/concat) (concatenar), apresentado na [Parte 1](/ptbr/part1/java_script#arrays):
246+
A nova nota é adicionada à lista de notas usando o método de array [concat](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/concat), apresentado na [Parte 1](/ptbr/part1/java_script#arrays):
257247

258248
```js
259249
setNotes(notes.concat(noteObject))
@@ -269,18 +259,17 @@ setNewNote('')
269259

270260
É possível encontrar o código atual completo da nossa aplicação na branch <i>part2-2</i> [neste repositório do GitHub](https://github.com/fullstack-hy2020/part2-notes/tree/part2-2).
271261

272-
### Filtragem dos elementos exibidos
262+
### Filtrando os elementos exibidos
273263

274264
Vamos adicionar algumas novas funcionalidades à nossa aplicação que nos permitam visualizar apenas as notas importantes.
275265

276-
Vamos adicionar um pedaço de estado ao componente <i>App</i> que vai manter o registro das notas que devem ser exibidas:
266+
Vamos adicionar um estado ao componente <i>App</i> que vai manter o registro das notas que devem ser exibidas:
277267

278268
```js
279269
const App = (props) => {
280270
const [notes, setNotes] = useState(props.notes)
281271
const [newNote, setNewNote] = useState('')
282272
const [showAll, setShowAll] = useState(true) // highlight-line
283-
// "exibirTudo" e "defExibirTudo", respectivamente.
284273

285274
// ...
286275
}
@@ -301,7 +290,6 @@ const App = (props) => {
301290

302291
// highlight-start
303292
const notesToShow = showAll
304-
// "notesToShow" traduz-se como "notasParaExibir"
305293
? notes
306294
: notes.filter(note => note.important === true)
307295
// highlight-end
@@ -330,13 +318,13 @@ const notesToShow = showAll
330318

331319
A definição utiliza o operador [condicional](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Conditional_Operator) (ou operador ternário) encontrado também em muitas outras linguagens de programação.
332320

333-
O operador funciona da seguinte maneira. Se tivermos...
321+
O operador funciona da seguinte maneira. Se tivermos
334322

335323
```js
336324
const result = condition ? val1 : val2
337325
```
338326

339-
... a variável <em>result</em> será definida com o valor de <em>val1</em> se <em>condition</em> for verdadeiro. Se <em>condition</em> for falso, a variável <em>result</em> será definida com o valor de <em>val2</em>.
327+
a variável <em>result</em> será definida com o valor de <em>val1</em> se <em>condition</em> for verdadeiro. Se <em>condition</em> for falso, a variável <em>result</em> será definida com o valor de <em>val2</em>.
340328

341329
Se o valor de <em>showAll</em> for falso, a variável <em>notesToShow</em> será atribuída a uma lista que contém somente as notas que possuem a propriedade <em>important</em> definida como verdadeira. A filtragem é feita com a ajuda do método de array [filter](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter) (filtrar):
342330

@@ -363,7 +351,7 @@ import { useState } from 'react'
363351
import Note from './components/Note'
364352

365353
const App = (props) => {
366-
const [notes, setNotes] = useState(props.notes)
354+
const [notes, setNotes] = useState(props.notes)
367355
const [newNote, setNewNote] = useState('')
368356
const [showAll, setShowAll] = useState(true)
369357

@@ -376,7 +364,7 @@ const App = (props) => {
376364
<div>
377365
<button onClick={() => setShowAll(!showAll)}>
378366
show {showAll ? 'important' : 'all' }
379-
{/* exibirTudo ? 'importante' : 'tudo' */}
367+
380368
</button>
381369
</div>
382370
// highlight-end
@@ -453,7 +441,7 @@ export default App
453441

454442
O estado <em>newName</em> é destinado a controlar o elemento de entrada do formulário.
455443

456-
Pode ser útil às vezes renderizar o estado e outras variáveis, como texto, para fins de depuração. Você pode adicionar temporariamente o seguinte elemento ao componente renderizado:
444+
Pode ser útil renderizar o estado e outras variáveis, como texto, para fins de depuração. Você pode adicionar temporariamente o seguinte elemento ao componente renderizado:
457445

458446
```
459447
<div>debug: {newName}</div>
@@ -467,16 +455,16 @@ Depois de concluir este exercício, sua aplicação deve ficar mais ou menos par
467455

468456
Atente-se ao uso da extensão "React developer tools" na imagem acima!
469457

470-
**N.B. (Nota Bene):**
458+
**Obs.:**
471459

472460
- Você pode usar o nome da pessoa como um valor da propriedade <i>key</i>; e
473-
- Lembre-se de impedir a ação padrão de envio de formulários HTML! (preventDefault)
461+
- Lembre-se de impedir a ação padrão de envio de formulários HTML (preventDefault)!
474462

475463
<h4>2.7: The Phonebook — 2º passo</h4>
476464

477465
Impeça que o usuário adicione nomes que já existam na lista telefônica. JavaScript têm inúmeros [métodos](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array) adequados para realizar esta tarefa. Tenha em mente [como funciona a igualdade de objetos](https://www.joshbritz.co/posts/why-its-so-hard-to-check-object-equality/) em JavaScript.
478466

479-
Emita uma aviso com o comando [alert](https://developer.mozilla.org/en-US/docs/Web/API/Window/alert) (alerta) quando o usuário tentar fazer isso:
467+
Emita um aviso com o comando [alert](https://developer.mozilla.org/en-US/docs/Web/API/Window/alert) (alerta) quando o usuário tentar fazer isso:
480468

481469
![captura de tela mostrando o exemplo do exercício 2.7](../../images/2/11e.png)
482470
<i>Tradução do alerta em tela: "Arto Hellas já foi adicionado à lista telefônica"</i>
@@ -485,7 +473,6 @@ Emita uma aviso com o comando [alert](https://developer.mozilla.org/en-US/docs/W
485473

486474
```js
487475
`${newName} is already added to phonebook`
488-
// `${newName} já foi adicionado(a) à lista telefônica!`
489476
```
490477

491478
Se a variável <em>newName</em> contiver o valor <i>Arto Hellas</i>, a expressão template string retornará a string:
@@ -500,11 +487,11 @@ O mesmo pode ser feito de um "jeito mais Java" usando o operador de soma (+):
500487
newName + ' is already added to phonebook'
501488
```
502489

503-
Template strings é a opção mais idiomática, além de que seu uso é o sinal que representa um verdadeiro profissional JavaScript.
490+
Template strings é a opção mais idiomática, além de que seu uso é o indício de um verdadeiro profissional JavaScript.
504491

505492
<h4>2.8: The Phonebook — 3º passo</h4>
506493

507-
Expanda sua aplicação permitindo com que os usuários adicionem números de telefone à lista telefônica. Você precisará adicionar um segundo elemento de <i>entrada</i> (input) ao formulário (junto com seu próprio gerenciador de evento):
494+
Expanda sua aplicação permitindo que os usuários adicionem números de telefone à lista telefônica. Você precisará adicionar um segundo elemento de <i>entrada</i> (input) ao formulário (junto com seu próprio gerenciador de evento):
508495

509496
```js
510497
<form>
@@ -526,7 +513,7 @@ Implemente um campo de pesquisa que possa ser usado para filtrar a lista de pess
526513

527514
Você pode implementar o campo de pesquisa como um elemento <i>input</i> que é colocado fora do formulário HTML. A lógica de filtragem mostrada na imagem é <i>case insensitive</i>, o que significa que se você pesquisar por <i>arto</i>, também há o retorno de resultados que contêm "Arto" com o A maiúsculo.
528515

529-
**N.B.:** Quando se está trabalhando em uma nova funcionalidade, é útil inserir em sua aplicação um "código de teste" — como alguns dados fantasiosos de pessoas — desta forma:
516+
**Obs.:** Quando se está trabalhando em uma nova funcionalidade, é útil inserir em sua aplicação um "código de teste" — como alguns dados fantasiosos de pessoas — desta forma:
530517

531518
```js
532519
const App = () => {
@@ -575,6 +562,6 @@ const App = () => {
575562
}
576563
```
577564

578-
**N.B.**: Você pode ter problemas neste exercício se definir seus componentes "no lugar errado". Agora, é definitivamente uma boa ideia revisar o capítulo da seção anterior: [Não defina Componentes dentro de Componentes](/ptbr/part1/um_estado_mais_complexo_e_depuracao_de_aplicacoes_react#nao-defina-componentes-dentro-de-componentes).
565+
**Obs.:**: Você pode ter problemas neste exercício se definir seus componentes "no lugar errado". Agora, é definitivamente uma boa ideia revisar o capítulo da seção anterior: [Não defina Componentes dentro de Componentes](/ptbr/part1/um_estado_mais_complexo_e_depuracao_de_aplicacoes_react#nao-defina-componentes-dentro-de-componentes).
579566

580567
</div>

0 commit comments

Comments
 (0)