diff --git a/src/content/reference/react/useState.md b/src/content/reference/react/useState.md index a6e3b2761..2de41017f 100644 --- a/src/content/reference/react/useState.md +++ b/src/content/reference/react/useState.md @@ -60,11 +60,11 @@ La convención es nombrar variables de estado como `[algo, setAlgo]` usando [des La función `set` devuelta por `useState` te permite actualizar el estado a un valor diferente y desencadenar un nuevo renderizado. Puedes pasar el siguiente estado directamente, o una función que lo calcule a partir del estado anterior: ```js -const [nombre, setNombre] = useState('Edward'); +const [name, setName] = useState('Edward'); function handleClick() { - setNombre('Taylor'); - setEdad(a => a + 1); + setName('Taylor'); + setAge(a => a + 1); // ... ``` @@ -97,12 +97,12 @@ Las funciones `set` no tienen un valor de retorno. Llama a `useState` en el nivel superior de tu componente para declarar una o más [variables de estado.](/learn/state-a-components-memory) -```js [[1, 4, "edad"], [2, 4, "setEdad"], [3, 4, "42"], [1, 5, "nombre"], [2, 5, "setNombre"], [3, 5, "'Taylor'"]] +```js [[1, 4, "age"], [2, 4, "setAge"], [3, 4, "42"], [1, 5, "name"], [2, 5, "setName"], [3, 5, "'Taylor'"]] import { useState } from 'react'; function MyComponent() { - const [edad, setEdad] = useState(42); - const [nombre, setNombre] = useState('Taylor'); + const [age, setAge] = useState(42); + const [name, setName] = useState('Taylor'); // ... ``` @@ -115,9 +115,9 @@ La convención es nombrar variables de estado como `[algo, setAlgo]` utilizando Para actualizar lo que está en la pantalla, llama a la función `set` con algún estado: -```js [[2, 2, "setNombre"]] +```js [[2, 2, "setName"]] function handleClick() { - setNombre('Robin'); + setName('Robin'); } ``` @@ -129,8 +129,8 @@ Llamar a la función `set` [**no cambia** el estado actual en el código que ya ```js {3} function handleClick() { - setNombre('Robin'); - console.log(nombre); // Sigue siendo "Taylor"! + setName('Robin'); + console.log(name); // ¡Sigue siendo "Taylor"! } ``` @@ -149,16 +149,16 @@ En este ejemplo, la variable `contador` contiene un número. Al hacer click en e ```js import { useState } from 'react'; -export default function Contador() { - const [contador, setContador] = useState(0); +export default function Counter() { + const [count, setCount] = useState(0); function handleClick() { - setContador(contador + 1); + setCount(count + 1); } return ( ); } @@ -178,17 +178,17 @@ En este ejemplo, la variable de estado `texto` contiene una cadena. Cuando escri import { useState } from 'react'; export default function MyInput() { - const [texto, setTexto] = useState('hola'); + const [text, setText] = useState('hello'); function handleChange(e) { - setTexto(e.target.value); + setText(e.target.value); } return ( <> - -

Escribiste: {texto}

- @@ -202,7 +202,7 @@ export default function MyInput() { #### Checkbox (booleano) {/*checkbox-boolean*/} -En este ejemplo, la variable de estado `meGusta` contiene un valor booleano. Al hacer click en el checkbox, `setMeGusta` actualiza la variable de estado `meGusta` si es que la entrada del checkbox del navegador fue marcada. La variable `meGusta` se utiliza para representar el texto debajo del checkbox. +En este ejemplo, la variable de estado `liked` contiene un valor booleano. Al hacer click en el checkbox, `setLiked` actualiza la variable de estado `liked` si es que la entrada del checkbox del navegador fue marcada. La variable `liked` se utiliza para representar el texto debajo del checkbox. @@ -210,10 +210,10 @@ En este ejemplo, la variable de estado `meGusta` contiene un valor booleano. Al import { useState } from 'react'; export default function MyCheckbox() { - const [meGusta, setMeGusta] = useState(true); + const [liked, setLiked] = useState(true); function handleChange(e) { - setMeGusta(e.target.checked); + setLiked(e.target.checked); } return ( @@ -221,12 +221,12 @@ export default function MyCheckbox() { -

A ti {meGusta ? 'te gusta' : 'no te gusta'} esto.

+

{liked ? 'Te' : 'No te'} gustó esto.

); } @@ -245,20 +245,20 @@ Se puede declarar más de una variable de estado en el mismo componente. Cada va ```js import { useState } from 'react'; -export default function Formulario() { - const [nombre, setNombre] = useState('Taylor'); - const [edad, setEdad] = useState(42); +export default function Form() { + const [name, setName] = useState('Taylor'); + const [age, setAge] = useState(42); return ( <> setNombre(e.target.value)} + value={name} + onChange={e => setName(e.target.value)} /> - -

Hola, {nombre}. Tu tiene {edad} años.

+

Hola, {name}. Tienes {age} años.

); } @@ -278,25 +278,25 @@ button { display: block; margin-top: 10px; } ### Actualización de estado con base en el estado anterior {/*updating-state-based-on-the-previous-state*/} -Supongamos que `edad` es `42`. La función `handler` llama `setEdad(edad + 1)` tres veces: +Supongamos que `age` es `42`. La función `handler` llama `setAge(age + 1)` tres veces: ```js function handleClick() { - setEdad(edad + 1); // setEdad(42 + 1) - setEdad(edad + 1); // setEdad(42 + 1) - setEdad(edad + 1); // setEdad(42 + 1) + setAge(age + 1); // setAge(42 + 1) + setAge(age + 1); // setAge(42 + 1) + setAge(age + 1); // setAge(42 + 1) } ``` -¡Sin embargo, después de un click, `edad` solo será `43` en lugar de 45! Esto se debe a que llamar a la función `set ` no actualizará la variable de estado `edad` en el código que ya se está ejecutando. Así que cada llamada `setAge(age + 1)` se convierte en `setEdad(43)`. +¡Sin embargo, después de un click, `age` solo será `43` en lugar de 45! Esto se debe a que llamar a la función `set ` no actualizará la variable de estado `age` en el código que ya se está ejecutando. Así que cada llamada `setAge(age + 1)` se convierte en `setAge(43)`. -Para resolver este problema, **puedes pasar una función de actualización** a `setEdad` en lugar del siguiente estado: +Para resolver este problema, **puedes pasar una función de actualización** a `setAge` en lugar del siguiente estado: -```js [[1, 2, "e ", 2], [2, 2, "e + 1"], [1, 3, "e ", 2], [2, 3, "e + 1"], [1, 4, "e ", 2], [2, 4, "e + 1"]] +```js [[1, 2, "a", 0], [2, 2, "a + 1"], [1, 3, "a", 0], [2, 3, "a + 1"], [1, 4, "a", 0], [2, 4, "a + 1"]] function handleClick() { - setEdad(e => e + 1); // setEdad(42 => 43) - setEdad(e => e + 1); // setEdad(43 => 44) - setEdad(e => e + 1); // setEdad(44 => 45) + setAge(a => a + 1); // setAge(42 => 43) + setAge(a => a + 1); // setAge(43 => 44) + setAge(a => a + 1); // setAge(44 => 45) } ``` @@ -310,7 +310,7 @@ React pone sus funciones de actualización en una [cola.](/learn/queueing-a-seri No hay otras actualizaciones en cola, por lo que React almacenará `45` como el estado actual al final. -Por convención, es común nombrar el argumento de estado pendiente como la primera letra del nombre de la variable de estado, como `e` para `edad`. No obstante, también puedes llamarlo como `prevEdad` o cualquier otra cosa que te resulte más clara. +Por convención, es común nombrar el argumento de estado pendiente como la primera letra del nombre de la variable de estado, como `e` para `age`. No obstante, también puedes llamarlo como `prevAge` o cualquier otra cosa que te resulte más clara. React puede [llamar a tus actualizadores dos veces](#my-initializer-or-updater-function-runs-twice) en desarrollo para verificar que sean [puros.](/learn/keeping-components-pure) @@ -339,23 +339,23 @@ Este ejemplo pasa la función de actualización, por lo que funciona el botón " ```js import { useState } from 'react'; -export default function Contador() { - const [edad, setEdad] = useState(42); +export default function Counter() { + const [age, setAge] = useState(42); - function incremento() { - setEdad(a => a + 1); + function increment() { + setAge(a => a + 1); } return ( <> -

Tu edad: {edad}

+

Tu edad: {age}

); @@ -380,16 +380,16 @@ Este ejemplo **no pasa** la función de actualización, por lo que el botón "+ ```js import { useState } from 'react'; -export default function Contador() { - const [edad, setEdad] = useState(42); +export default function Counter() { + const [age, setAge] = useState(42); function increment() { - setEdad(edad + 1); + setAge(age + 1); } return ( <> -

Tu edad: {edad}

+

Tu edad: {age}

+ setTitle(''); + onAddTodo(title); + }}>Añadir ) } @@ -738,11 +738,11 @@ function Task({ todo, onChange, onDelete }) { todoContent = ( <> { onChange({ ...todo, - titulo: e.target.value + title: e.target.value }); }} /> @@ -774,7 +774,7 @@ function Task({ todo, onChange, onDelete }) { /> {todoContent} ); @@ -803,9 +803,9 @@ import { useImmer } from 'use-immer'; let nextId = 3; const initialList = [ - { id: 0, titulo: 'Big Bellies', seen: false }, - { id: 1, titulo: 'Paisaje Lunar', seen: false }, - { id: 2, titulo: 'Ejército de Terracota', seen: true }, + { id: 0, title: 'Big Bellies', seen: false }, + { id: 1, title: 'Lunar Landscape', seen: false }, + { id: 2, title: 'Terracotta Army', seen: true }, ]; export default function BucketList() { @@ -822,8 +822,8 @@ export default function BucketList() { return ( <> -

Lista de cubo de arte

-

Mi lista de arte para ver:

+

Lista de deseos para obras de arte

+

Mi lista de obras de arte para ver:

@@ -847,7 +847,7 @@ function ItemList({ artworks, onToggle }) { ); }} /> - {artwork.titulo} + {artwork.title} ))} @@ -898,7 +898,7 @@ Para resolver esto, puedes **pasarlo como una función inicializadora** a `useSt ```js function TodoList() { - const [todos, setTodos] = useState(crearInicialTodos); + const [todos, setTodos] = useState(createInitialTodos); // ... ``` @@ -922,33 +922,33 @@ function createInitialTodos() { for (let i = 0; i < 50; i++) { initialTodos.push({ id: i, - texto: 'Item ' + (i + 1) + text: 'Item ' + (i + 1) }); } return initialTodos; } export default function TodoList() { - const [todos, setTodos] = useState(crearIniciarTodos); - const [texto, setTexto] = useState(''); + const [todos, setTodos] = useState(createInitialTodos); + const [text, setText] = useState(''); return ( <> setText(e.target.value)} /> + }}>Add @@ -975,7 +975,7 @@ function createInitialTodos() { for (let i = 0; i < 50; i++) { initialTodos.push({ id: i, - texto: 'Item ' + (i + 1) + text: 'Item ' + (i + 1) }); } return initialTodos; @@ -983,25 +983,25 @@ function createInitialTodos() { export default function TodoList() { const [todos, setTodos] = useState(createInitialTodos()); - const [texto, setTexto] = useState(''); + const [text, setText] = useState(''); return ( <> setTexto(e.target.value)} + value={text} + onChange={e => setText(e.target.value)} /> @@ -1047,15 +1047,15 @@ export default function App() { } function Form() { - const [nombre, setNombre] = useState('Taylor'); + const [name, setName] = useState('Taylor'); return ( <> setNombre(e.target.value)} + value={name} + onChange={e => setName(e.target.value)} /> -

Hola, {nombre}.

+

Hola, {name}.

); } @@ -1102,10 +1102,10 @@ export default function App() { return ( <> @@ -1121,12 +1121,12 @@ export default function CountLabel({ count }) { const [trend, setTrend] = useState(null); if (prevCount !== count) { setPrevCount(count); - setTrend(count > prevCount ? 'increasing' : 'decreasing'); + setTrend(count > prevCount ? 'aumenta' : 'disminuye'); } return ( <>

{count}

- {trend &&

The count is {trend}

} + {trend &&

El contador {trend}

} ); } @@ -1223,17 +1223,17 @@ En [Modo estricto](/reference/react/StrictMode), React llamará a algunas de tus ```js {2,5-6,11-12} function TodoList() { - // Esta función de componente se ejecutará dos veces por cada procesamiento. + // Esta función de componente se ejecutará dos veces por cada procesamiento. const [todos, setTodos] = useState(() => { - // Esta función de inicialización se ejecutará dos veces durante la inicialización. - return crearTodos(); + // Esta función de inicialización se ejecutará dos veces durante la inicialización. + return createTodos(); }); function handleClick() { setTodos(prevTodos => { // Esta función de actualización se ejecutará dos veces por cada click. - return [...prevTodos, crearTodo()]; + return [...prevTodos, createTodo()]; }); } // ...