From 546ac4ab9392469fba2705e001d6a648d16eb01d Mon Sep 17 00:00:00 2001 From: Johan Santana Date: Wed, 5 Oct 2022 12:59:27 -0400 Subject: [PATCH 1/6] translate responding to events --- .../src/content/learn/responding-to-events.md | 210 +++++++++--------- 1 file changed, 105 insertions(+), 105 deletions(-) diff --git a/beta/src/content/learn/responding-to-events.md b/beta/src/content/learn/responding-to-events.md index d8fd239e9..3188a0aca 100644 --- a/beta/src/content/learn/responding-to-events.md +++ b/beta/src/content/learn/responding-to-events.md @@ -1,24 +1,24 @@ --- -title: Responding to Events +title: Respondiendo a Eventos --- -React lets you add *event handlers* to your JSX. Event handlers are your own functions that will be triggered in response to interactions like clicking, hovering, focusing form inputs, and so on. +React te permite añadir *manejadores de eventos* a tu JSX. Los manejadores de eventos son tus propias funciones que serán disparadas en respuesta a interacciones como hacer clic, hover, enfocar inputs en formularios, entre otros. -* Different ways to write an event handler -* How to pass event handling logic from a parent component -* How events propagate and how to stop them +* Diferentes maneras de escribir un manejador de eventos +* Cómo pasar la lógica de manejo de eventos desde un componente padre +* Cómo los eventos se propagan y cómo detenerlos -## Adding event handlers {/*adding-event-handlers*/} +## Añadiendo manejadores de eventos {/*adding-event-handlers*/} -To add an event handler, you will first define a function and then [pass it as a prop](/learn/passing-props-to-a-component) to the appropriate JSX tag. For example, here is a button that doesn't do anything yet: +Para agregar un manejador de eventos, primero definirás una función y luego [la pasarás como una prop](/learn/passing-props-to-a-component) a la etiqueta JSX apropiada. Por ejemplo, aquí está un botón que no hace nada todavía: @@ -34,11 +34,11 @@ export default function Button() { -You can make it show a message when a user clicks by following these three steps: +Puedes hacer que muestre un mensaje cuando un usuario haga clic siguiendo estos tres pasos: -1. Declare a function called `handleClick` *inside* your `Button` component. -2. Implement the logic inside that function (use `alert` to show the message). -3. Add `onClick={handleClick}` to the ` ); } @@ -45,12 +45,12 @@ Puedes hacer que muestre un mensaje cuando un usuario haga clic siguiendo estos ```js export default function Button() { function handleClick() { - alert('You clicked me!'); + alert('Me cliqueaste!'); } return ( ); } @@ -73,7 +73,7 @@ Por otro lado, puedes definir un manejador de eventos en línea en el JSX: ```jsx ); } function UploadButton() { return ( - ); } @@ -225,13 +225,13 @@ Aquí, el componente `Toolbar` renderiza un `PlayButton` y un `UploadButton`: - `PlayButton` pasa `handlePlayClick` como la prop `onClick` al `Button` que está dentro. - `UploadButton` pasa `() => alert('Uploading!')` como la prop `onClick` al `Button` que está dentro. -Finalmente, tu componente `Button` acepta una prop llamada `onClick`. Pasa esa prop directamente al ` - ); @@ -278,8 +278,8 @@ Cuando tu componente soporta múltiples interacciones, podrías nombrar las prop export default function App() { return ( alert('Playing!')} - onUploadImage={() => alert('Uploading!')} + onPlayMovie={() => alert('Reproduciendo!')} + onUploadImage={() => alert('Subiendo!')} /> ); } @@ -288,10 +288,10 @@ function Toolbar({ onPlayMovie, onUploadImage }) { return (
); @@ -312,7 +312,7 @@ button { margin-right: 10px; } -Fíjate como el componente `App` no necesita saber *qué* `Toolbar` hará con `onPlayMovie` o `onUploadImage`. Eso es un detalle de implementación del `Toolbar`. Aquí, `Toolbar` los pasa como manejadores `onClick` en sus `Button`s, pero podría luego dispararlos con un atajo de teclado. Nombrar props después de interacciónes específicas de la aplicación como `onPlayMovie` te da la flexibilidad de cambiar como son usadas más tarde. +Fíjate como el componente `App` no necesita saber *qué* `Toolbar` hará con `onPlayMovie` o `onUploadImage`. Eso es un detalle de implementación del `Toolbar`. Aquí, `Toolbar` los pasa como manejadores `onClick` en sus `Button`s, pero podría luego desencadenarlos con un atajo de teclado. Nombrar props después de interacciónes específicas de la aplicación como `onPlayMovie` te da la flexibilidad de cambiar como son usadas más tarde. ## Propagación de eventos {/*event-propagation*/} @@ -326,13 +326,13 @@ Este `
` contiene dos botones. Tanto el `
` *como* cada botón tienen su export default function Toolbar() { return (
{ - alert('You clicked on the toolbar!'); + alert('Cliqueaste el Toolbar!'); }}> - -
); @@ -349,7 +349,7 @@ button { margin: 5px; } -Si haces clic en cualquiera de los botones, su `onClick` se ejecutará primero, seguido por el `onClick` del `
`. Así que dos mensajes aparecerán. Si haces clic en el toolbar como tal, solo el `onClick` del `
` padre se ejecutará. +Si haces clic en cualquiera de los botones, su `onClick` se ejecutará primero, seguido por el `onClick` del `
`. Así que dos mensajes aparecerán. Si haces clic en el propio toolbar, solo el `onClick` del `
` padre se ejecutará. @@ -380,13 +380,13 @@ function Button({ onClick, children }) { export default function Toolbar() { return (
{ - alert('You clicked on the toolbar!'); + alert('Cliqueaste el Toolbar!'); }}> - -
); @@ -454,7 +454,7 @@ function Button({ onClick, children }) { También puede que añadas más codigo a este manejador antes de llamar al manejador de eventos `onClick` del padre. Este patrón proporciona una *alternativa* a la propagación. Le permite al componente hijo manejar el evento, mientras también le permite al componente padre especificar algún comportamiento adicional. A diferencia de la propagación, no es automático. Pero el beneficio de este patrón es que puedes seguir claramente la cadena de código completa que se ejecuta como resultado de algún evento. -Si confías en la propagacion y es difícil rastrear cuales manejadores se ejecutaron y por qué, intenta este enfoque. +Si dependes de la propagacion y es difícil rastrear cuales manejadores se ejecutaron y por qué, intenta este enfoque. ### Evitando comportamiento por defecto {/*preventing-default-behavior*/} @@ -465,7 +465,7 @@ Algunos eventos del navegador tienen comportamientos por defecto asociados a ell ```js export default function Signup() { return ( - alert('Submitting!')}> + alert('Enviando!')}> @@ -488,10 +488,10 @@ export default function Signup() { return (
{ e.preventDefault(); - alert('Submitting!'); + alert('Enviando!'); }}> - +
); } @@ -512,7 +512,7 @@ No confundas `e.stopPropagation()` y `e.preventDefault()`. Ambos son útiles, pe Absolutamente! Los manejadores de eventos son el mejor lugar para los efectos secundarios. -A diferencia de las funciones de renderizado, los manejadores de eventos no necesitan ser [puros](/learn/keeping-components-pure), asi que es un buen lugar para *cambiar* algo—por ejemplo, cambiar el valor de un input en respuesta a la escritura, o cambiar una lista en respuesta a un botón presionado. Sin embargo, para cambiar una información, primero necesitas alguna manera de almacenarla. En React, esto se hace usando el [estado, la memoria de un componente.](/learn/state-a-components-memory) Aprenderás todo sobre ello en la siguiente página. +A diferencia de las funciones de renderización, los manejadores de eventos no necesitan ser [puros](/learn/keeping-components-pure), asi que es un buen lugar para *cambiar* algo—por ejemplo, cambiar el valor de un input en respuesta a la escritura, o cambiar una lista en respuesta a un botón presionado. Sin embargo, para cambiar una información, primero necesitas alguna manera de almacenarla. En React, esto se hace usando el [estado, la memoria de un componente.](/learn/state-a-components-memory) Aprenderás todo sobre ello en la siguiente página. @@ -551,7 +551,7 @@ export default function LightSwitch() { return ( ); } @@ -578,7 +578,7 @@ export default function LightSwitch() { return ( ); } @@ -603,7 +603,7 @@ export default function LightSwitch() { return ( ); } @@ -627,7 +627,7 @@ export default function ColorSwitch({ }) { return ( ); } @@ -661,7 +661,7 @@ export default function App() {

-

Clicks on the page: {clicks}

+

Clics en la página: {clicks}

); } @@ -686,7 +686,7 @@ export default function ColorSwitch({ e.stopPropagation(); onChangeColor(); }}> - Change color + Cambiar color ); } @@ -720,7 +720,7 @@ export default function App() {

-

Clicks on the page: {clicks}

+

Clics en la página: {clicks}

); } From 8c74eaa5951a7d8a8f7fc614cbac181e47969bd9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rainer=20Mart=C3=ADnez=20Fraga?= Date: Tue, 11 Oct 2022 09:17:26 -0400 Subject: [PATCH 5/6] Update responding-to-events.md --- .../src/content/learn/responding-to-events.md | 114 +++++++++--------- 1 file changed, 57 insertions(+), 57 deletions(-) diff --git a/beta/src/content/learn/responding-to-events.md b/beta/src/content/learn/responding-to-events.md index 8df21b12a..a21a3ee79 100644 --- a/beta/src/content/learn/responding-to-events.md +++ b/beta/src/content/learn/responding-to-events.md @@ -1,10 +1,10 @@ --- -title: Respondiendo a Eventos +title: Responder a Eventos --- -React te permite añadir *manejadores de eventos* a tu JSX. Los manejadores de eventos son tus propias funciones que serán desencadenadas en respuesta a interacciones como hacer clic, hover, enfocar inputs en formularios, entre otros. +React te permite añadir *manejadores de eventos* a tu JSX. Los manejadores de eventos son tus propias funciones que se ejecutarán en respuesta a interacciones como hacer clic, _hover_, enfocar _input_s en formularios, entre otras. @@ -45,12 +45,12 @@ Puedes hacer que muestre un mensaje cuando un usuario haga clic siguiendo estos ```js export default function Button() { function handleClick() { - alert('Me cliqueaste!'); + alert('¡Me cliqueaste!'); } return ( ); } @@ -62,9 +62,9 @@ button { margin-right: 10px; } -Definiste la función `handleClick` y luego [la pasaste como una prop](/learn/passing-props-to-a-component) al ` ); @@ -229,9 +229,9 @@ Finalmente, tu componente `Button` acepta una prop llamada `onClick`. Pasa esa p Si usas un [sistema de diseño](https://uxdesign.cc/everything-you-need-to-know-about-design-systems-54b109851969), es común para componentes como los botones que contengan estilos pero no especifiquen un comportamiento. En cambio, componentes como `PlayButton` y `UploadButton` pasarán los manejadores de eventos. -### Nombrando props de manejadores de eventos {/*naming-event-handler-props*/} +### Nombrar props de manejadores de eventos {/*naming-event-handler-props*/} -Componentes integrados como ` -
@@ -357,9 +357,9 @@ Todos los eventos se propagan en React excepto `onScroll`, el cual solo funciona -### Deteniendo la propagación {/*stopping-propagation*/} +### Detener la propagación {/*stopping-propagation*/} -Los manejadores de evento reciben un **objeto del evento** como su único parámetro. Por convención, normalmente es llamado `e`, que quiere decir "evento". Puedes usar este objeto para leer información del evento. +Los manejadores de eventos reciben un **objeto del evento** como su único parámetro. Por convención, normalmente es llamado `e`, que quiere decir "evento". Puedes usar este objeto para leer información del evento. Ese objeto del evento también te permite detener la propagación. Si quieres evitar que un evento llegue a los componentes padre, necesitas llamar `e.stopPropagation()` como este componente `Button` lo hace: @@ -380,12 +380,12 @@ function Button({ onClick, children }) { export default function Toolbar() { return (
{ - alert('Cliqueaste el Toolbar!'); + alert('¡Cliqueaste el Toolbar!'); }}> - -
@@ -407,12 +407,12 @@ Cuando haces clic en un botón: 1. React llama al manejador `onClick` pasado al ` @@ -488,7 +488,7 @@ export default function Signup() { return (
{ e.preventDefault(); - alert('Enviando!'); + alert('¡Enviando!'); }}> @@ -505,25 +505,25 @@ button { margin-left: 5px; } No confundas `e.stopPropagation()` y `e.preventDefault()`. Ambos son útiles, pero no están relacionados: -* [`e.stopPropagation()`](https://developer.mozilla.org/docs/Web/API/Event/stopPropagation) evita que los manejadores de eventos adjuntos a etiquetas de nivel superior se activen. -* [`e.preventDefault()` ](https://developer.mozilla.org/docs/Web/API/Event/preventDefault) evita el comportamiento por defecto del navegador para algunos eventos que lo tienen. +* [`e.stopPropagation()`](https://developer.mozilla.org/es/docs/Web/API/Event/stopPropagation) evita que los manejadores de eventos adjuntos a etiquetas de nivel superior se activen. +* [`e.preventDefault()` ](https://developer.mozilla.org/es/docs/Web/API/Event/preventDefault) evita el comportamiento por defecto del navegador para algunos eventos que lo tienen. ## ¿Pueden los manejadores de eventos tener efectos secundarios? {/*can-event-handlers-have-side-effects*/} -Absolutamente! Los manejadores de eventos son el mejor lugar para los efectos secundarios. +¡Absolutamente! Los manejadores de eventos son el mejor lugar para los efectos secundarios. -A diferencia de las funciones de renderización, los manejadores de eventos no necesitan ser [puros](/learn/keeping-components-pure), asi que es un buen lugar para *cambiar* algo—por ejemplo, cambiar el valor de un input en respuesta a la escritura, o cambiar una lista en respuesta a un botón presionado. Sin embargo, para cambiar una información, primero necesitas alguna manera de almacenarla. En React, esto se hace usando el [estado, la memoria de un componente.](/learn/state-a-components-memory) Aprenderás todo sobre ello en la siguiente página. +A diferencia de las funciones de renderizado, los manejadores de eventos no necesitan ser [puros](/learn/keeping-components-pure), asi que es un buen lugar para *cambiar* algo; por ejemplo, cambiar el valor de un input en respuesta a la escritura, o cambiar una lista en respuesta a un botón presionado. Sin embargo, para cambiar una información, primero necesitas alguna manera de almacenarla. En React, esto se hace usando el [estado, la memoria de un componente.](/learn/state-a-components-memory) Aprenderás todo sobre ello en la siguiente página. * Puedes manejar eventos pasando una función como prop a un elemento como `