From 57e5d3d6e6e2dbcf44dc5a4f85cdada5a406b9a2 Mon Sep 17 00:00:00 2001 From: Iago Bruno Date: Fri, 8 Feb 2019 02:31:05 -0300 Subject: [PATCH 01/14] Translation of the "Handling Events" page --- content/docs/handling-events.md | 72 ++++++++++++++++----------------- 1 file changed, 36 insertions(+), 36 deletions(-) diff --git a/content/docs/handling-events.md b/content/docs/handling-events.md index a8d3a1f51..ac866b7ea 100644 --- a/content/docs/handling-events.md +++ b/content/docs/handling-events.md @@ -1,6 +1,6 @@ --- id: handling-events -title: Handling Events +title: Manipulando eventos permalink: docs/handling-events.html prev: state-and-lifecycle.html next: conditional-rendering.html @@ -8,65 +8,65 @@ redirect_from: - "docs/events-ko-KR.html" --- -Handling events with React elements is very similar to handling events on DOM elements. There are some syntactic differences: +Manipular eventos em elementos com React é muito semelhante ao tratamento de eventos em elementos no DOM. Existem algumas diferenças sintáticas: -* React events are named using camelCase, rather than lowercase. -* With JSX you pass a function as the event handler, rather than a string. +* Eventos em React são nomeados usando camelCase ao invés de letras minúsculas. +* Com o JSX você passa uma função como manipulador de eventos ao invés de um texto. -For example, the HTML: +For exemplo, com HTML: ```html ``` -is slightly different in React: +É ligeiramente diferente com React: ```js{1} ``` -Another difference is that you cannot return `false` to prevent default behavior in React. You must call `preventDefault` explicitly. For example, with plain HTML, to prevent the default link behavior of opening a new page, you can write: +Outra diferença é que você não pode retornar `false` para evitar o comportamento padrão no React. Você deve chamar `preventDefault` explícitamente. Por exemplo, com HTML simples, para evitar que um link abra uma nova página, você pode escrever: ```html - - Click me + + Clique em mim ``` -In React, this could instead be: +Em React, isso poderia ser: ```js{2-5,8} function ActionLink() { function handleClick(e) { e.preventDefault(); - console.log('The link was clicked.'); + console.log('O link foi clicado.'); } return ( - Click me + Clique em mim ); } ``` -Here, `e` is a synthetic event. React defines these synthetic events according to the [W3C spec](https://www.w3.org/TR/DOM-Level-3-Events/), so you don't need to worry about cross-browser compatibility. See the [`SyntheticEvent`](/docs/events.html) reference guide to learn more. +Aqui, "`e`" é um evento sintético. O React define esses eventos sintéticos de acordo com a [especificação W3C](https://www.w3.org/TR/DOM-Level-3-Events/), então, não precisa se preocupar com a compatibilidade entre navegadores. Veja a página [`SyntheticEvent`](/docs/events.html) para saber mais. -When using React you should generally not need to call `addEventListener` to add listeners to a DOM element after it is created. Instead, just provide a listener when the element is initially rendered. +Ao usar o React você geralmente não precisa chamar `addEventListener` para adicionar ouvintes a um elemento no DOM depois que ele é criado. Ao invés disso você pode apenas definir um ouvinte quando o elemento é inicialmente renderizado. -When you define a component using an [ES6 class](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Classes), a common pattern is for an event handler to be a method on the class. For example, this `Toggle` component renders a button that lets the user toggle between "ON" and "OFF" states: +Quando você define um componente usando uma [classe do ES6](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Classes), um padrão comum é que um manipulador de eventos seja um método na classe. Por exemplo, este componente `Toggle` renderiza um botão que permite ao usuário alternar entre os estados "ON" e "OFF": ```js{6,7,10-14,18} class Toggle extends React.Component { constructor(props) { super(props); - this.state = {isToggleOn: true}; + this.state = { isToggleOn: true }; - // This binding is necessary to make `this` work in the callback + // Esse bind é necessário para fazer o `this` funcionar dentro do callback this.handleClick = this.handleClick.bind(this); } @@ -91,18 +91,18 @@ ReactDOM.render( ); ``` -[**Try it on CodePen**](http://codepen.io/gaearon/pen/xEmzGg?editors=0010) +[**Experimente no CodePen**](http://codepen.io/gaearon/pen/xEmzGg?editors=0010) -You have to be careful about the meaning of `this` in JSX callbacks. In JavaScript, class methods are not [bound](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_objects/Function/bind) by default. If you forget to bind `this.handleClick` and pass it to `onClick`, `this` will be `undefined` when the function is actually called. +Você precisa ter cuidado com o significado do `this` nos callbacks do JSX. Em JavaScript, os métodos de classe não são [vinculados](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_objects/Function/bind) por padrão. Se você esquecer de fazer o bind de `this.handleClick` e passá-lo para um `onClick`, o `this` será `undefined` quando a função for realmente chamada. -This is not React-specific behavior; it is a part of [how functions work in JavaScript](https://www.smashingmagazine.com/2014/01/understanding-javascript-function-prototype-bind/). Generally, if you refer to a method without `()` after it, such as `onClick={this.handleClick}`, you should bind that method. +Este não é um comportamento específico do React; é uma parte de [como funcionam as funções em JavaScript](https://www.smashingmagazine.com/2014/01/understanding-javascript-function-prototype-bind/). Geralmente, se você referir a um método sem `()` depois dele, como `onClick={this.handleClick}`, você deve fazer o bind manual deste método. -If calling `bind` annoys you, there are two ways you can get around this. If you are using the experimental [public class fields syntax](https://babeljs.io/docs/plugins/transform-class-properties/), you can use class fields to correctly bind callbacks: +Se ficar chamando "bind" incomoda você, há duas maneiras de contornar isso. Se você estiver usando a [sintaxe experimental de campos de classe pública](https://babeljs.io/docs/plugins/transform-class-properties/), você pode usar campos de classe para vincular callbaks corretamente: ```js{2-6} class LoggingButton extends React.Component { - // This syntax ensures `this` is bound within handleClick. - // Warning: this is *experimental* syntax. + // Essa sintaxe garante que o `this` seja vinculado ao handleClick. + // Atenção: essa é uma sintaxe *experimental*. handleClick = () => { console.log('this is:', this); } @@ -110,16 +110,16 @@ class LoggingButton extends React.Component { render() { return ( ); } } ``` -This syntax is enabled by default in [Create React App](https://github.com/facebookincubator/create-react-app). +Essa sintaxe é habilitada por padrão no [Create React App](https://github.com/facebookincubator/create-react-app). -If you aren't using class fields syntax, you can use an [arrow function](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Functions/Arrow_functions) in the callback: +Se você não estiver usando a sintaxe de campos de classe, poderá usar uma [arrow function](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Functions/Arrow_functions) no retorno da chamada: ```js{7-9} class LoggingButton extends React.Component { @@ -128,7 +128,7 @@ class LoggingButton extends React.Component { } render() { - // This syntax ensures `this` is bound within handleClick + // Essa sintaxe garante que o `this` seja vinculado ao handleClick. return ( - + + ``` -The above two lines are equivalent, and use [arrow functions](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions) and [`Function.prototype.bind`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_objects/Function/bind) respectively. +As duas linhas acima são equivalentes e usam [arrow functions](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions) e [`Function.prototype.bind`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_objects/Function/bind) respectivamente. -In both cases, the `e` argument representing the React event will be passed as a second argument after the ID. With an arrow function, we have to pass it explicitly, but with `bind` any further arguments are automatically forwarded. +Em ambos os casos, o argumento `e` representando o evento do React será passado como segundo argumento após o ID. Com uma arrow function, nós temos que passá-lo explicitamente, mas com o `bind` outros argumentos adicionais são automaticamente encaminhados. From 5b08a23f4f986a938d3cb175bfd2e479fa3d41a0 Mon Sep 17 00:00:00 2001 From: Glaucia Lemos Date: Fri, 8 Feb 2019 12:23:13 -0300 Subject: [PATCH 02/14] fix: Change the word "for" to "por" in content/docs/handling-events.md Co-Authored-By: httpiago --- content/docs/handling-events.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/docs/handling-events.md b/content/docs/handling-events.md index ac866b7ea..56a2bae52 100644 --- a/content/docs/handling-events.md +++ b/content/docs/handling-events.md @@ -13,7 +13,7 @@ Manipular eventos em elementos com React é muito semelhante ao tratamento de ev * Eventos em React são nomeados usando camelCase ao invés de letras minúsculas. * Com o JSX você passa uma função como manipulador de eventos ao invés de um texto. -For exemplo, com HTML: +Por exemplo, com HTML: ```html From d699a6c093be6f3dcc346b9320f2fdc14c9a495e Mon Sep 17 00:00:00 2001 From: Glaucia Lemos Date: Fri, 8 Feb 2019 12:58:30 -0300 Subject: [PATCH 06/14] fix: Punctuation correction in handling-events.md Co-Authored-By: httpiago --- content/docs/handling-events.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/docs/handling-events.md b/content/docs/handling-events.md index 4a81a9880..2e58c1703 100644 --- a/content/docs/handling-events.md +++ b/content/docs/handling-events.md @@ -151,4 +151,4 @@ Dentro de uma estrutura de repetição é comum querer passar um parâmetro extr As duas linhas acima são equivalentes e usam [arrow functions](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions) e [`Function.prototype.bind`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_objects/Function/bind) respectivamente. -Em ambos os casos, o argumento `e` representando o evento do React será passado como segundo argumento após o ID. Com uma arrow function, nós temos que passá-lo explicitamente, mas com o `bind` outros argumentos adicionais são automaticamente encaminhados. +Em ambos os casos, o argumento `e` representando o evento do React será passado como segundo argumento após o ID. Com uma arrow function, nós temos que passá-lo explicitamente. Mas com o `bind` outros argumentos adicionais serão automaticamente encaminhados. From 5807825be890ba469f552cd4d0115bb65ff984e0 Mon Sep 17 00:00:00 2001 From: Iago Bruno Date: Fri, 8 Feb 2019 13:22:59 -0300 Subject: [PATCH 07/14] docs: Little corrections in handling-events.md --- content/docs/handling-events.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/content/docs/handling-events.md b/content/docs/handling-events.md index 2e58c1703..a271d7a78 100644 --- a/content/docs/handling-events.md +++ b/content/docs/handling-events.md @@ -33,7 +33,7 @@ Outra diferença é que você não pode retornar `false` para evitar o comportam ```html - Clique em mim + Clique Aqui ``` @@ -48,7 +48,7 @@ function ActionLink() { return ( - Clique em mim + Clique Aqui ); } @@ -95,7 +95,7 @@ ReactDOM.render( Você precisa ter cuidado com o significado do `this` nos callbacks do JSX. Em JavaScript, os métodos de classe não são [vinculados](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_objects/Function/bind) por padrão. Se você esquecer de fazer o bind de `this.handleClick` e passá-lo para um `onClick`, o `this` será `undefined` quando a função for realmente chamada. -Este não é um comportamento específico do React; é uma parte de [como funcionam as funções em JavaScript](https://www.smashingmagazine.com/2014/01/understanding-javascript-function-prototype-bind/). Geralmente, se você referir a um método sem `()` depois dele, como `onClick={this.handleClick}`, você deve fazer o bind manual deste método. +Este não é um comportamento específico do React. É uma parte de [como funcionam as funções em JavaScript](https://www.smashingmagazine.com/2014/01/understanding-javascript-function-prototype-bind/). Geralmente, se você referir a um método sem `()` depois dele, como `onClick={this.handleClick}`, você deve fazer o bind manual deste método. Se ficar chamando "bind" incomoda você, há duas maneiras de contornar isso. Se você estiver usando a [sintaxe experimental de campos de classe pública](https://babeljs.io/docs/plugins/transform-class-properties/), você pode usar campos de classe para vincular callbaks corretamente: @@ -110,7 +110,7 @@ class LoggingButton extends React.Component { render() { return ( ); } From a8e5ff403fa57694ebe9759b808743dbc6d04da9 Mon Sep 17 00:00:00 2001 From: Iago Bruno Date: Fri, 8 Feb 2019 13:26:27 -0300 Subject: [PATCH 08/14] docs: Correction of links to MDN documentation in pt-BR --- content/docs/handling-events.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/content/docs/handling-events.md b/content/docs/handling-events.md index a271d7a78..aece7daf7 100644 --- a/content/docs/handling-events.md +++ b/content/docs/handling-events.md @@ -58,7 +58,7 @@ Aqui, "`e`" é um synthetic event. O React define esses eventos sintéticos de a Ao usar o React você geralmente não precisa chamar `addEventListener` para adicionar ouvintes a um elemento no DOM depois que ele é criado. Ao invés disso você pode apenas definir um ouvinte quando o elemento é inicialmente renderizado. -Quando você define um componente usando uma [classe do ES6](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Classes), um padrão comum é que um manipulador de eventos seja um método na classe. Por exemplo, este componente `Toggle` renderiza um botão que permite ao usuário alternar entre os estados "ON" e "OFF": +Quando você define um componente usando uma [classe do ES6](https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Classes), um padrão comum é que um manipulador de eventos seja um método na classe. Por exemplo, este componente `Toggle` renderiza um botão que permite ao usuário alternar entre os estados "ON" e "OFF": ```js{6,7,10-14,18} class Toggle extends React.Component { @@ -93,7 +93,7 @@ ReactDOM.render( [**Experimente no CodePen**](http://codepen.io/gaearon/pen/xEmzGg?editors=0010) -Você precisa ter cuidado com o significado do `this` nos callbacks do JSX. Em JavaScript, os métodos de classe não são [vinculados](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_objects/Function/bind) por padrão. Se você esquecer de fazer o bind de `this.handleClick` e passá-lo para um `onClick`, o `this` será `undefined` quando a função for realmente chamada. +Você precisa ter cuidado com o significado do `this` nos callbacks do JSX. Em JavaScript, os métodos de classe não são [vinculados](https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Global_objects/Function/bind) por padrão. Se você esquecer de fazer o bind de `this.handleClick` e passá-lo para um `onClick`, o `this` será `undefined` quando a função for realmente chamada. Este não é um comportamento específico do React. É uma parte de [como funcionam as funções em JavaScript](https://www.smashingmagazine.com/2014/01/understanding-javascript-function-prototype-bind/). Geralmente, se você referir a um método sem `()` depois dele, como `onClick={this.handleClick}`, você deve fazer o bind manual deste método. @@ -119,7 +119,7 @@ class LoggingButton extends React.Component { Essa sintaxe é habilitada por padrão no [Create React App](https://github.com/facebookincubator/create-react-app). -Se você não estiver usando a sintaxe de campos de classe, poderá usar uma [arrow function](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Functions/Arrow_functions) no retorno da chamada: +Se você não estiver usando a sintaxe de campos de classe, poderá usar uma [arrow function](https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Functions/Arrow_functions) no retorno da chamada: ```js{7-9} class LoggingButton extends React.Component { @@ -149,6 +149,6 @@ Dentro de uma estrutura de repetição é comum querer passar um parâmetro extr ``` -As duas linhas acima são equivalentes e usam [arrow functions](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions) e [`Function.prototype.bind`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_objects/Function/bind) respectivamente. +As duas linhas acima são equivalentes e usam [arrow functions](https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Functions/Arrow_functions) e [`Function.prototype.bind`](https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Global_objects/Function/bind) respectivamente. Em ambos os casos, o argumento `e` representando o evento do React será passado como segundo argumento após o ID. Com uma arrow function, nós temos que passá-lo explicitamente. Mas com o `bind` outros argumentos adicionais serão automaticamente encaminhados. From ffe8b6d7fa40108572660d6dfd80dab1f726428b Mon Sep 17 00:00:00 2001 From: Iago Bruno Date: Fri, 8 Feb 2019 13:35:45 -0300 Subject: [PATCH 09/14] docs: Revert translation "retorno da chamada" to "callback" as described in Glossary and Style Guide --- content/docs/handling-events.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/docs/handling-events.md b/content/docs/handling-events.md index aece7daf7..3232dab52 100644 --- a/content/docs/handling-events.md +++ b/content/docs/handling-events.md @@ -119,7 +119,7 @@ class LoggingButton extends React.Component { Essa sintaxe é habilitada por padrão no [Create React App](https://github.com/facebookincubator/create-react-app). -Se você não estiver usando a sintaxe de campos de classe, poderá usar uma [arrow function](https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Functions/Arrow_functions) no retorno da chamada: +Se você não estiver usando a sintaxe de campos de classe, poderá usar uma [arrow function](https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Functions/Arrow_functions) como callback: ```js{7-9} class LoggingButton extends React.Component { From 05e72ff0fdabc6c9375b09fbaa3093fe44b7f7b8 Mon Sep 17 00:00:00 2001 From: Wendell Adriel Date: Fri, 8 Feb 2019 13:42:29 -0300 Subject: [PATCH 10/14] docs: Replace "tratamento" to "manipular" in handling-events.md Co-Authored-By: httpiago --- content/docs/handling-events.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/docs/handling-events.md b/content/docs/handling-events.md index 3232dab52..ddfee869c 100644 --- a/content/docs/handling-events.md +++ b/content/docs/handling-events.md @@ -8,7 +8,7 @@ redirect_from: - "docs/events-ko-KR.html" --- -Manipular eventos em elementos com React é muito semelhante ao tratamento de eventos em elementos no DOM. Existem algumas diferenças sintáticas: +Manipular eventos em elementos React é muito semelhante a manipular eventos em elementos do DOM. Existem algumas diferenças sintáticas: * Eventos em React são nomeados usando camelCase ao invés de letras minúsculas. * Com o JSX você passa uma função como manipulador de eventos ao invés de um texto. From 70c98565e8acb45880214f5b8aaafab5ec971a71 Mon Sep 17 00:00:00 2001 From: Wendell Adriel Date: Fri, 8 Feb 2019 13:46:14 -0300 Subject: [PATCH 11/14] docs: little correction in handling-events.md "Em React" -> "No React" Co-Authored-By: httpiago --- content/docs/handling-events.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/docs/handling-events.md b/content/docs/handling-events.md index ddfee869c..b30799120 100644 --- a/content/docs/handling-events.md +++ b/content/docs/handling-events.md @@ -37,7 +37,7 @@ Outra diferença é que você não pode retornar `false` para evitar o comportam ``` -Em React, isso poderia ser: +No React, isso poderia ser: ```js{2-5,8} function ActionLink() { From f88e73326812eb3563836d5f75a7aa20c00c568f Mon Sep 17 00:00:00 2001 From: Wendell Adriel Date: Fri, 8 Feb 2019 14:00:55 -0300 Subject: [PATCH 12/14] docs: change the conjugation of word "precisa" in handling-events.md Co-Authored-By: httpiago --- content/docs/handling-events.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/docs/handling-events.md b/content/docs/handling-events.md index b30799120..c72385700 100644 --- a/content/docs/handling-events.md +++ b/content/docs/handling-events.md @@ -54,7 +54,7 @@ function ActionLink() { } ``` -Aqui, "`e`" é um synthetic event. O React define esses eventos sintéticos de acordo com a [especificação W3C](https://www.w3.org/TR/DOM-Level-3-Events/). Então, não precisa se preocupar com a compatibilidade entre navegadores. Veja a página [`SyntheticEvent`](/docs/events.html) para saber mais. +Aqui, "`e`" é um synthetic event. O React define esses eventos sintéticos de acordo com a [especificação W3C](https://www.w3.org/TR/DOM-Level-3-Events/). Então, não precisamos nos preocupar com a compatibilidade entre navegadores. Veja a página [`SyntheticEvent`](/docs/events.html) para saber mais. Ao usar o React você geralmente não precisa chamar `addEventListener` para adicionar ouvintes a um elemento no DOM depois que ele é criado. Ao invés disso você pode apenas definir um ouvinte quando o elemento é inicialmente renderizado. From 984700f1280211941fe2a7d95a92192e2eacd614 Mon Sep 17 00:00:00 2001 From: Iago Bruno Date: Fri, 8 Feb 2019 20:11:16 -0300 Subject: [PATCH 13/14] docs: Translation of a session link in handling-events.md --- content/docs/handling-events.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/docs/handling-events.md b/content/docs/handling-events.md index c72385700..9c279109a 100644 --- a/content/docs/handling-events.md +++ b/content/docs/handling-events.md @@ -140,7 +140,7 @@ class LoggingButton extends React.Component { O problema com esta sintaxe é que um callback diferente é criado toda vez que o `LoggingButton` é renderizado. Na maioria dos casos, tudo bem. No entanto, se esse callback for passado para componentes inferiores através de props, esses componentes poderão fazer uma renderização extra. Geralmente recomendamos a vinculação no construtor ou a sintaxe dos campos de classe para evitar esse tipo de problema de desempenho. -## Passando argumentos para manipuladores de eventos {#passing-arguments-to-event-handlers} +## Passando Argumentos para Manipuladores de Eventos {#passando-argumentos-para-manipuladores-de-eventos} Dentro de uma estrutura de repetição é comum querer passar um parâmetro extra para um manipulador de evento. Por exemplo, se `id` é o ID de identificação da linha, qualquer um dos dois a seguir funcionará: From 651b3eb7292a03b08d36bfd88733abd83595314e Mon Sep 17 00:00:00 2001 From: Iago Bruno Date: Fri, 8 Feb 2019 20:18:59 -0300 Subject: [PATCH 14/14] docs: Reformulation of a comment in handling-events.md --- content/docs/handling-events.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/docs/handling-events.md b/content/docs/handling-events.md index 9c279109a..5c62ced75 100644 --- a/content/docs/handling-events.md +++ b/content/docs/handling-events.md @@ -66,7 +66,7 @@ class Toggle extends React.Component { super(props); this.state = { isToggleOn: true }; - // Esse bind é necessário para fazer o `this` funcionar dentro do callback + // Aqui utilizamos o `bind` para que o `this` funcione dentro da nossa callback this.handleClick = this.handleClick.bind(this); }