Skip to content

Commit b9d797a

Browse files
authored
Merge branch 'master' into is-react-translated-blog-PT-BR
2 parents 9b15469 + 60bb160 commit b9d797a

9 files changed

+368
-79
lines changed

content/blog/2019-02-06-react-v16.8.0.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ afterEach(() => {
7272
container = null;
7373
});
7474
75-
it('can render and update a counter, () => {
75+
it('can render and update a counter', () => {
7676
// Testa primeira renderização e resultado
7777
act(() => {
7878
ReactDOM.render(<Counter />, container);

content/community/conferences.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,11 @@ September 26-28, 2019 in Goa, India
7676

7777
[Website](https://www.reactindia.io/) - [Twitter](https://twitter.com/react_india) - [Facebook](https://www.facebook.com/ReactJSIndia)
7878

79+
### React Alicante 2019 {#react-alicante-2019}
80+
September 26-28, 2019 in Alicante, Spain
81+
82+
[Website](http://reactalicante.es/) - [Twitter](https://twitter.com/reactalicante) - [Facebook](https://www.facebook.com/ReactAlicante)
83+
7984
## Past Conferences {#past-conferences}
8085

8186
### React.js Conf 2015 {#reactjs-conf-2015}

content/docs/hooks-custom.md

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,11 @@ import React, { useState, useEffect } from 'react';
1818
function FriendStatus(props) {
1919
const [isOnline, setIsOnline] = useState(null);
2020
21-
function handleStatusChange(status) {
22-
setIsOnline(status.isOnline);
23-
}
24-
2521
useEffect(() => {
22+
function handleStatusChange(status) {
23+
setIsOnline(status.isOnline);
24+
}
25+
2626
ChatAPI.subscribeToFriendStatus(props.friend.id, handleStatusChange);
2727
return () => {
2828
ChatAPI.unsubscribeFromFriendStatus(props.friend.id, handleStatusChange);
@@ -44,11 +44,11 @@ import React, { useState, useEffect } from 'react';
4444
function FriendListItem(props) {
4545
const [isOnline, setIsOnline] = useState(null);
4646
47-
function handleStatusChange(status) {
48-
setIsOnline(status.isOnline);
49-
}
50-
5147
useEffect(() => {
48+
function handleStatusChange(status) {
49+
setIsOnline(status.isOnline);
50+
}
51+
5252
ChatAPI.subscribeToFriendStatus(props.friend.id, handleStatusChange);
5353
return () => {
5454
ChatAPI.unsubscribeFromFriendStatus(props.friend.id, handleStatusChange);
@@ -79,11 +79,11 @@ import React, { useState, useEffect } from 'react';
7979
function useFriendStatus(friendID) {
8080
const [isOnline, setIsOnline] = useState(null);
8181
82-
function handleStatusChange(status) {
83-
setIsOnline(status.isOnline);
84-
}
85-
8682
useEffect(() => {
83+
function handleStatusChange(status) {
84+
setIsOnline(status.isOnline);
85+
}
86+
8787
ChatAPI.subscribeToFriendStatus(friendID, handleStatusChange);
8888
return () => {
8989
ChatAPI.unsubscribeFromFriendStatus(friendID, handleStatusChange);

content/docs/hooks-effect.md

Lines changed: 25 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -198,17 +198,17 @@ Vamos ver como poderíamos escrever esse componente usando Hooks.
198198
199199
Você pode pensar que precisamos de um efeito separado para executarmos a limpeza. Mas o código para adicionar e remover uma subscription é tão relacionado um com o outro que o `useEffect` foi desenhado para mantê-los juntos. Se o seu efeito retornar uma função, o React irá executá-la quando for a hora de limpar:
200200
201-
```js{10-16}
201+
```js{6-16}
202202
import React, { useState, useEffect } from 'react';
203203

204204
function FriendStatus(props) {
205205
const [isOnline, setIsOnline] = useState(null);
206206

207-
function handleStatusChange(status) {
208-
setIsOnline(status.isOnline);
209-
}
210-
211207
useEffect(() => {
208+
function handleStatusChange(status) {
209+
setIsOnline(status.isOnline);
210+
}
211+
212212
ChatAPI.subscribeToFriendStatus(props.friend.id, handleStatusChange);
213213
// Especifique como limpar depois desse efeito:
214214
return function cleanup() {
@@ -237,6 +237,10 @@ Nós aprendemos que `useEffect` nos deixa expressar diferentes tipos de efeitos
237237
238238
```js
239239
useEffect(() => {
240+
function handleStatusChange(status) {
241+
setIsOnline(status.isOnline);
242+
}
243+
240244
ChatAPI.subscribeToFriendStatus(props.friend.id, handleStatusChange);
241245
return () => {
242246
ChatAPI.unsubscribeFromFriendStatus(props.friend.id, handleStatusChange);
@@ -316,15 +320,15 @@ function FriendStatusWithCounter(props) {
316320

317321
const [isOnline, setIsOnline] = useState(null);
318322
useEffect(() => {
323+
function handleStatusChange(status) {
324+
setIsOnline(status.isOnline);
325+
}
326+
319327
ChatAPI.subscribeToFriendStatus(props.friend.id, handleStatusChange);
320328
return () => {
321329
ChatAPI.unsubscribeFromFriendStatus(props.friend.id, handleStatusChange);
322330
};
323331
});
324-
325-
function handleStatusChange(status) {
326-
setIsOnline(status.isOnline);
327-
}
328332
// ...
329333
}
330334
```
@@ -394,6 +398,7 @@ Agora considere a versão desse componente que usa Hooks:
394398
function FriendStatus(props) {
395399
// ...
396400
useEffect(() => {
401+
// ...
397402
ChatAPI.subscribeToFriendStatus(props.friend.id, handleStatusChange);
398403
return () => {
399404
ChatAPI.unsubscribeFromFriendStatus(props.friend.id, handleStatusChange);
@@ -449,8 +454,12 @@ Quando nós renderizamos com `count` atualizado para `6`, o React irá comparar
449454
450455
Isso também funciona para efeitos que tenham uma fase de limpeza:
451456
452-
```js{6}
457+
```js{10}
453458
useEffect(() => {
459+
function handleStatusChange(status) {
460+
setIsOnline(status.isOnline);
461+
}
462+
454463
ChatAPI.subscribeToFriendStatus(props.friend.id, handleStatusChange);
455464
return () => {
456465
ChatAPI.unsubscribeFromFriendStatus(props.friend.id, handleStatusChange);
@@ -462,9 +471,13 @@ No futuro, talvez o segundo argumento seja adicionado automaticamente por uma tr
462471
463472
>Nota
464473
>
465-
>Se você usar essa otimização, tenha certeza de que a array inclua **qualquer valor do escopo acima que mude com o tempo e que ele seja usado pelo efeito**. Do contrário, seu código ira referenciar valores estagnados da renderização passada. Nós iremos discutir outras opções de otimização nas [referencias da API do Hooks](/docs/hooks-reference.html).
474+
>Se você usar essa otimização, tenha certeza de que a array inclua **qualquer valor do escopo acima (como props e state) que mude com o tempo e que ele seja usado pelo efeito**. Caso contrário, seu código fará referência a valores obsoletos de renderizações anteriores. Saiba mais sobre [como lidar com funções](/docs/hooks-faq.html#is-it-safe-to-omit-functions-from-the-list-of-dependencies) e [o que fazer quando a matriz muda com muita frequência](/docs/hooks-faq.html#what-can-i-do-if-my-effect-dependencies-change-too-often).
475+
>
476+
>Se você quer executar um efeito e limpá-lo apenas uma vez (na montagem e desmontagem), você pode passar um array vazio (`[]`) como segundo argumento. Isso conta ao React que o seu efeito não depende de *nenhum* valor das props ou state, então ele nunca precisa re-executar. Isso não é tratado como um caso especial -- ele segue diretamente a maneira como o array de entrada sempre funcionam.
477+
>
478+
>Se você passar um array vazio (`[]`), a props e o state passados dentro do efeito sempre terão seus valores iniciais. Enquanto passando `[]` como segundo parametro aproxima-se do modelo mental familiar de `componentDidMount` e `componentWillUnmount`, geralmente hás [melhores](/docs/hooks-faq.html#is-it-safe-to-omit-functions-from-the-list-of-dependencies) [soluções](/docs/hooks-faq.html#what-can-i-do-if-my-effect-dependencies-change-too-often) para evitar efeitos repetidos com muita freqüência. Além disso, não esqueça de que o React adia a execução do `useEffect` até o navegador ser pintado, então fazer trabalho extra é menos problemático.
466479
>
467-
>Se você quer executar um efeito e limpá-lo apenas uma vez (na montagem e desmontagem), você pode passar um array vazio (`[]`) como segundo argumento. Isso diz ao React que o seu efeito não depende de *nenhum* valor das props ou state, então ele nunca precisa re-executar. Isso não é tratado como um caso especial -- ele segue diretamente a maneira como os arrays passados como input do Hook sempre funcionam. Passar `[]` aproxima-se do modelo mental familiar de `componentDidMount` e `componentWillUnmount`, contudo nós sugerimos não fazer disso um hábito pois geralmente gera bugs, [como discutido acima](#explanation-why-effects-run-on-each-update). Não esqueça de que o React adia a execução do `useEffect` até o navegador ser pintado, então fazer trabalho extra é menos problemático.
480+
>Recomendamos usar as regras do [`exhaustive-deps`](https://github.com/facebook/react/issues/14920) como parte do nosso pacote [`eslint-plugin-react-hooks`](https://www.npmjs.com/package/eslint-plugin-react-hooks#installation). Ele avisa quando as dependências são especificadas incorretamente e sugere uma correção.
468481
469482
## Próximos Passos {#next-steps}
470483

0 commit comments

Comments
 (0)