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/learn/index.md
+8-8
Original file line number
Diff line number
Diff line change
@@ -285,12 +285,12 @@ Puedes responder a eventos declarando funciones *controladoras de eventos* dentr
285
285
```js {2-4,7}
286
286
functionMyButton() {
287
287
functionhandleClick() {
288
-
alert('¡Me presionaste!');
288
+
alert('¡Me hiciste clic!');
289
289
}
290
290
291
291
return (
292
292
<button onClick={handleClick}>
293
-
Presióname
293
+
Hazme clic
294
294
</button>
295
295
);
296
296
}
@@ -300,7 +300,7 @@ function MyButton() {
300
300
301
301
## Actualizar la pantalla {/*updating-the-screen*/}
302
302
303
-
A menudo, querrás que tu componente "recuerde" alguna información y la muestre. Por ejemplo, quizá quieras contar el número de veces que se hace clic en un botón. Para lograrlo, añade *estado* a tu componente.
303
+
A menudo, querrás que tu componente "recuerde" alguna información y la muestre. Por ejemplo, quizá quieras contar el número de veces que hiciste clic en un botón. Para lograrlo, añade *estado* a tu componente.
304
304
305
305
Primero, importa [`useState`](/reference/react/useState) de React:
306
306
@@ -330,7 +330,7 @@ function MyButton() {
330
330
331
331
return (
332
332
<button onClick={handleClick}>
333
-
Presionado {count} veces
333
+
Hiciste clic {count} veces
334
334
</button>
335
335
);
336
336
}
@@ -364,7 +364,7 @@ function MyButton() {
364
364
365
365
return (
366
366
<button onClick={handleClick}>
367
-
Presionado {count} veces
367
+
Hiciste clic {count} veces
368
368
</button>
369
369
);
370
370
}
@@ -389,7 +389,7 @@ Los Hooks son más restrictivos que las funciones regulares. Solo puedes llamar
389
389
390
390
## Compartir datos entre componentes {/*sharing-data-between-components*/}
391
391
392
-
En el ejemplo anterior, cada `MyButton` tenía su propio `count` independiente, y cuando se hacía clic en cada botón, solo el `count` del botón cliqueado cambiaba:
392
+
En el ejemplo anterior, cada `MyButton` tenía su propio `count` independiente, y cuando hiciste clic en cada botón, solo el `count` del botón en hiciste clic cambiaba:
393
393
394
394
<DiagramGroup>
395
395
@@ -484,7 +484,7 @@ Finalmente, cambia `MyButton` para que *lea* las props que le pasaste desde el c
484
484
functionMyButton({ count, onClick }) {
485
485
return (
486
486
<button onClick={onClick}>
487
-
Presionado {count} veces
487
+
Hiciste clic {count} veces
488
488
</button>
489
489
);
490
490
}
@@ -518,7 +518,7 @@ export default function MyApp() {
#### Lee el último estado {/*read-the-latest-state*/}
581
581
582
-
En este ejemplo, después de que presionas "Enviar", hay un pequeño retraso antes de que el mensaje se muestre. Escribe "hola", presiona Enviar, y luego rápidamente edita el input otra vez. A pesar de tus cambios, la alerta seguirá mostrando "hola" (que fue el valor del estado [en el momento](/learn/state-as-a-snapshot#state-over-time) en que se presionó el botón).
582
+
En este ejemplo, después de que presionas "Enviar", hay un pequeño retraso antes de que el mensaje se muestre. Escribe "hola", presiona Enviar, y luego rápidamente edita el input otra vez. A pesar de tus cambios, la alerta seguirá mostrando "hola" (que fue el valor del estado [en el momento](/learn/state-as-a-snapshot#state-over-time) en el que hiciste clic en el botón).
583
583
584
584
Normalmente, este es el comportamiento que quieres en una aplicación. Sin embargo, en ocasiones quieres que algún código asíncrono lea la *última* versión de algún estado. ¿Se te ocurre alguna manera de hacer que la alerta muestre el texto *actual* del input en lugar del que estaba en el momento del clic?
En lugar de ejecutar el código que está dentro cada vez que se renderiza, esto crea una función para que se llame más tarde.
@@ -132,7 +132,7 @@ En ambos casos, lo que quieres pasar es una función:
132
132
133
133
### Leyendo las props en controladores de eventos {/*reading-props-in-event-handlers*/}
134
134
135
-
Como los controladores de eventos son declarados dentro de un componente, tienen acceso a las props del componente. Este es un botón que, cuando recibe el clic, muestra una alerta con su prop `message`:
135
+
Como los controladores de eventos son declarados dentro de un componente, tienen acceso a las props del componente. Este es un botón que, cuando se hace clic, muestra una alerta con su prop `message`:
136
136
137
137
<Sandpack>
138
138
@@ -332,7 +332,7 @@ Este `<div>` contiene dos botones. Tanto el `<div>` *como* cada botón tienen su
332
332
exportdefaultfunctionToolbar() {
333
333
return (
334
334
<div className="Toolbar" onClick={() => {
335
-
alert('¡Cliqueaste el Toolbar!');
335
+
alert('¡Hiciste clic en la barra de herramientas!');
336
336
}}>
337
337
<button onClick={() =>alert('¡Reproduciendo!')}>
338
338
Reproducir película
@@ -386,7 +386,7 @@ function Button({ onClick, children }) {
386
386
exportdefaultfunctionToolbar() {
387
387
return (
388
388
<div className="Toolbar" onClick={() => {
389
-
alert('¡Cliqueaste el Toolbar!');
389
+
alert('¡Hiciste clic en la barra de herramientas!');
390
390
}}>
391
391
<Button onClick={() =>alert('¡Reproduciendo!')}>
392
392
Reproducir película
@@ -436,7 +436,7 @@ En raros casos, puede que necesites capturar todos los eventos en elementos hijo
436
436
Cada evento se propaga en tres fases:
437
437
438
438
1. Viaja hacia abajo, llamando a todos los controladores `onClickCapture`.
439
-
2. Ejecuta el controlador `onClick` del elemento pulsado.
439
+
2. Ejecuta el controlador `onClick` del elemento en que se hace clic.
440
440
3. Viaja hacia arriba, llamando a todos los controladores `onClick`.
441
441
442
442
Los eventos de captura son útiles para código como enrutadores o para analítica, pero probablemente no lo usarás en código de aplicaciones.
@@ -466,7 +466,7 @@ Si dependes de la propagación y es difícil rastrear cuales controladores se ej
466
466
467
467
### Evitar el comportamiento por defecto {/*preventing-default-behavior*/}
468
468
469
-
Algunos eventos del navegador tienen comportamientos por defecto asociados a ellos. Por ejemplo, un evento submit de un `<form>`, que ocurre cuando se pulsa un botón que está dentro de él, por defecto recargará la página completa:
469
+
Algunos eventos del navegador tienen comportamientos por defecto asociados a ellos. Por ejemplo, un evento submit de un `<form>`, que ocurre cuando se hace clic en un botón que está dentro de él, por defecto recargará la página completa:
Copy file name to clipboardExpand all lines: src/content/learn/separating-events-from-effects.md
+2-2
Original file line number
Diff line number
Diff line change
@@ -31,7 +31,7 @@ Digamos que ya tienes el código implementado para ello, pero no estas seguro de
31
31
32
32
### Los controladores de eventos se ejecutan en respuesta a interacciones especificas {/*event-handlers-run-in-response-to-specific-interactions*/}
33
33
34
-
Desde la perspectiva de un usuario, enviar un mensaje debería pasar*porque*específicamente se hizo click en el botón "Enviar". El usuario se molestará si tu envías su mensaje en otro momento o por cualquier otro motivo. Esta es la razón por la que enviar un mensaje debería de ser un controlador de Evento. Los controladores de eventos te permiten controlar interacciones especificas como por ejemplo, clicks:
34
+
Desde la perspectiva del usuario, el envío de un mensaje debe producirse*porque* se hace clic en particular en el botón "Enviar". El usuario se enfadará bastante si envías su mensaje en cualquier otro momento o por cualquier otro motivo. Esta es la razón por la que enviar un mensaje debería ser un controlador de evento. Los controladores de eventos te permiten controlar interacciones específicas:
Copy file name to clipboardExpand all lines: src/content/learn/tutorial-tic-tac-toe.md
+4-4
Original file line number
Diff line number
Diff line change
@@ -709,7 +709,7 @@ Rellenemos el componente `Square` con una `X` al hacer clic en él. Declara una
709
709
```js {2-4,9}
710
710
functionSquare({ value }) {
711
711
functionhandleClick() {
712
-
console.log('¡haz hecho clic!');
712
+
console.log('¡hiciste clic!');
713
713
}
714
714
715
715
return (
@@ -723,15 +723,15 @@ function Square({ value }) {
723
723
}
724
724
```
725
725
726
-
Si haces clic en un cuadrado ahora, deberías ver un registro que dice `"¡haz hecho clic!"` en la pestaña *Consola* en la parte inferior de la sección *Navegador* de CodeSandbox. Al hacer clic en el cuadrado más de una vez, se registrará `"¡haz hecho clic!"` de nuevo. Los registros repetidos en la consola con el mismo mensaje no crearán más líneas en la consola. En su lugar, verás un contador incremental al lado de su primer registro `"¡haz hecho clic!"`.
726
+
Si haces clic en un cuadrado ahora, deberías ver un registro que dice `"¡hiciste clic!"` en la pestaña *Consola* en la parte inferior de la sección *Navegador* de CodeSandbox. Al hacer clic en el cuadrado más de una vez, se registrará `"¡hiciste clic!"` de nuevo. Los registros repetidos en la consola con el mismo mensaje no crearán más líneas en la consola. En su lugar, verás un contador incremental al lado de su primer registro `"¡hiciste clic!"`.
727
727
728
728
<Note>
729
729
730
730
Si estás siguiendo este tutorial utilizando tu entorno de desarrollo local, debes abrir la consola de tu navegador. Por ejemplo, si usas el navegador Chrome, puedes ver la Consola con el método abreviado de teclado **Shift + Ctrl + J** (en Windows/Linux) u **Option + ⌘ + J** (en macOS).
731
731
732
732
</Note>
733
733
734
-
Como siguiente paso, deseas que el componente `Square` "recuerde" que se hizo clic y lo rellene con una marca "X". Para "recordar" cosas, los componentes usan *estado*.
734
+
Como siguiente paso, deseas que el componente `Square` "recuerde" que hiciste clic y lo rellene con una marca "X". Para "recordar" cosas, los componentes usan *estado*.
735
735
736
736
React proporciona una función especial llamada `useState` que puedes llamar desde tu componente para permitirle "recordar" cosas. Almacenemos el valor actual del `Square` en el estado, y cambiémoslo cuando se haga clic en `Square`.
737
737
@@ -776,7 +776,7 @@ export default function Board() {
776
776
}
777
777
```
778
778
779
-
Ahora cambia `Square` para mostrar una "X" cuando se haga clic. Reemplaza el controlador de evento `console.log("¡haz hecho clic!");` con `setValue('X');`. Ahora tu componente `Square` se ve así:
779
+
Ahora cambia `Square` para mostrar una "X" cuando se haga clic. Reemplaza el controlador de evento `console.log("¡hiciste clic!");` con `setValue('X');`. Ahora tu componente `Square` se ve así:
Copy file name to clipboardExpand all lines: src/content/learn/you-might-not-need-an-effect.md
+1-1
Original file line number
Diff line number
Diff line change
@@ -24,7 +24,7 @@ Los Efectos son una vía de escape del paradigma de React. Te permiten "salir" d
24
24
Hay dos casos comunes en los cuales no necesitas utilizar Efectos:
25
25
26
26
***No necesitas Efectos para transformar datos antes de renderizar.** Por ejemplo, supongamos que deseas filtrar una lista antes de mostrarla. Podrías sentirte tentado/a a escribir un Efecto que actualice una variable de estado cuando cambie la lista. Sin embargo, esto es ineficiente. Cuando actualizas el estado, React primero llama a las funciones de tu componente para calcular lo que debería mostrarse en la pantalla. Luego, React ["confirmará"](/learn/render-and-commit) estos cambios en el DOM, actualizando la pantalla. Después, React ejecuta tus Efectos. Si tu Efecto también actualiza inmediatamente el estado, ¡esto reinicia todo el proceso desde cero! Para evitar pasadas de renderizado innecesarias, transforma todos los datos en el nivel superior de tus componentes. Ese código se volverá a ejecutar automáticamente cada vez que tus _props_ o estado cambien.
27
-
***No necesitas Efectos para manejar eventos del usuario.** Por ejemplo, supongamos que deseas enviar una solicitud POST `/api/buy` y mostrar una notificación cuando el usuario compra un producto. En el controlador de eventos del botón "Comprar", sabes exactamente lo que sucedió. Para el momento en que se ejecuta un Efecto, no sabes *qué* hizo el usuario (por ejemplo, qué botón se hizo clic). Por esta razón, generalmente se manejan los eventos del usuario en los controladores de eventos correspondientes.
27
+
***No necesitas Efectos para manejar eventos del usuario.** Por ejemplo, supongamos que deseas enviar una solicitud POST `/api/buy` y mostrar una notificación cuando el usuario compra un producto. En el controlador de eventos del botón "Comprar", sabes exactamente lo que sucedió. Para el momento en que se ejecuta un Efecto, no sabes *qué* hizo el usuario (por ejemplo, en qué botón se hizo clic). Por esta razón, generalmente se manejan los eventos del usuario en los controladores de eventos correspondientes.
28
28
29
29
Es *cierto* que necesitas Efectos para [sincronizar](/learn/synchronizing-with-effects#what-are-effects-and-how-are-they-different-from-events) con sistemas externos. Por ejemplo, puedes escribir un Efecto que mantenga sincronizado un _widget_ de jQuery con el estado de React. También puedes obtener datos con Efectos, por ejemplo, puedes sincronizar los resultados de búsqueda con la consulta de búsqueda actual. Ten en cuenta que los [_frameworks_](/learn/start-a-new-react-project#production-grade-react-frameworks) modernos proporcionan mecanismos más eficientes y nativos para obtener datos que escribir Efectos directamente en tus componentes.
React se unirá al HTML que existe dentro de `domNode`, y se encargará de gestionar el DOM dentro de él. Una aplicación completamente construida con React normalmente sólo tendrá una llamada a `hydrateRoot` con su componente raíz.
33
33
34
-
[Consulta los ejemplos anteriores.](#usage)
34
+
[Ver más ejemplos abajo.](#usage)
35
35
36
36
#### Parámetros {/*parameters*/}
37
37
@@ -140,7 +140,7 @@ Para hidratar tu aplicación, React "adjuntará" la lógica de tus componentes a
140
140
El contenido HTML dentro de <div id="root">...</div>
141
141
fue generado a partir de App por react-dom/server.
142
142
-->
143
-
<div id="root"><h1>Hola, mundo!</h1><button>Me has hecho clic <!---->0<!----> veces</button></div>
Copy file name to clipboardExpand all lines: src/content/reference/react-dom/server/index.md
+1-1
Original file line number
Diff line number
Diff line change
@@ -46,4 +46,4 @@ Estas APIs se eliminarán en una versión principal futura de React.
46
46
47
47
</Deprecated>
48
48
49
-
*[`renderToNodeStream`](/reference/react-dom/server/renderToNodeStream) renderiza un árbol de React a un [Node.js Readable stream.](https://nodejs.org/api/stream.html#readable-streams) (Obsoleto.)
49
+
*[`renderToNodeStream`](/reference/react-dom/server/renderToNodeStream) renderiza un árbol de React a un [Node.js Readable stream.](https://nodejs.org/api/stream.html#readable-streams) (Obsoleta.)
0 commit comments