Skip to content

Commit 04b447e

Browse files
authored
Merge pull request #127 from reactjs/sync-e3cf542e
Sync with reactjs.org @ e3cf542
2 parents b726491 + cb8e643 commit 04b447e

File tree

2 files changed

+27
-38
lines changed

2 files changed

+27
-38
lines changed

content/blog/2018-06-07-you-probably-dont-need-derived-state.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,7 @@ To recap, when designing a component, it is important to decide whether its data
213213
Instead of trying to **"mirror" a prop value in state**, make the component **controlled**, and consolidate the two diverging values in the state of some parent component. For example, rather than a child accepting a "committed" `props.value` and tracking a "draft" `state.value`, have the parent manage both `state.draftValue` and `state.committedValue` and control the child's value directly. This makes the data flow more explicit and predictable.
214214

215215
For **uncontrolled** components, if you're trying to reset state when a particular prop (usually an ID) changes, you have a few options:
216-
* **Recomendation: To reset _all internal state_, use the `key` attribute.**
216+
* **Recommendation: To reset _all internal state_, use the `key` attribute.**
217217
* Alternative 1: To reset _only certain state fields_, watch for changes in a special property (e.g. `props.userID`).
218218
* Alternative 2: You can also consider fall back to an imperative instance method using refs.
219219

content/docs/hooks-reference.md

Lines changed: 26 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ prev: hooks-custom.html
66
next: hooks-faq.html
77
---
88

9-
*Hooks* are a new addition in React 16.8. They let you use state and other React features without writing a class.
9+
Los Hooks son una nueva incorporación en React 16.8. Te permiten usar estado y otras características de React sin escribir una clase.
1010

1111
Esta página describe las API para los Hooks incorporados en React.
1212

@@ -35,16 +35,15 @@ const [state, setState] = useState(initialState);
3535

3636
Devuelve un valor con estado y una función para actualizarlo.
3737

38-
Durante el render inicial, el estado devuelto (`state`) es el mismo que el valor pasado como primer argumento (`initialState`).
38+
Durante el renderizado inicial, el estado devuelto (`state`) es el mismo que el valor pasado como primer argumento (`initialState`).
3939

4040
La función `setState` se usa para actualizar el estado. Acepta un nuevo valor de estado y encola una nueva renderización del componente.
4141

4242
```js
4343
setState(newState);
4444
```
4545

46-
During subsequent re-renders, the first value returned by `useState` will always be the most recent state after applying updates.
47-
Durante las siguientes re-renders, el primer valor devuelto por `useState` siempre será el estado más reciente después de aplicar las actualizaciones.
46+
En las renderizaciones siguientes, el primer valor devuelto por `useState` será siempre el estado más reciente después de aplicar las actualizaciones.
4847

4948
#### Actualizaciones funcionales {#functional-updates}
5049

@@ -90,9 +89,9 @@ const [state, setState] = useState(() => {
9089
});
9190
```
9291
93-
#### Bailing out of a state update {#bailing-out-of-a-state-update}
92+
#### Evitar una actualización del estado {#bailing-out-of-a-state-update}
9493

95-
If you update a State Hook to the same value as the current state, React will bail out without rendering the children or firing effects. (React uses the [`Object.is` comparison algorithm](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is#Description).)
94+
Si se actualiza un Hook de estado con el mismo valor que el estado actual, React evitará la renderización de los hijos y disparar los efectos. (React utiliza el [algoritmo de comparación `Object.is`](https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Objetos_globales/Object/is#Description)).
9695

9796
### `useEffect` {#useeffect}
9897

@@ -132,7 +131,7 @@ Sin embargo, no todos los efectos pueden ser diferidos. Por ejemplo, una mutaci
132131

133132
Aunque `useEffect` se aplaza hasta después de que el navegador se haya pintado, se garantiza que se activará antes de cualquier nuevo render. React siempre eliminará los efectos de un render anterior antes de comenzar una nueva actualización.
134133

135-
#### Condicionalmente disparando un efecto. {#conditionally-firing-an-effect}
134+
#### Disparar un efecto condicionalmente. {#conditionally-firing-an-effect}
136135

137136
El comportamiento predeterminado para los efectos es ejecutar el efecto después de cada render completo. De esa manera, siempre se recrea un efecto si cambia uno de sus inputs.
138137

@@ -182,9 +181,9 @@ const [state, dispatch] = useReducer(reducer, initialArg, init);
182181

183182
Una alternativa a [`useState`](#usestate). Acepta un reducer de tipo `(state, action) => newState` y devuelve el estado actual emparejado con un método` dispatch`. (Si está familiarizado con Redux, ya sabe cómo funciona).
184183

185-
`useReducer` is usually preferable to `useState` when you have complex state logic that involves multiple sub-values or when the next state depends on the previous one. `useReducer` also lets you optimize performance for components that trigger deep updates because [you can pass `dispatch` down instead of callbacks](/docs/hooks-faq.html#how-to-avoid-passing-callbacks-down).
184+
`useReducer` a menudo es preferible a `useState` cuando se tiene una lógica compleja que involucra múltiples subvalores o cuando el próximo estado depende del anterior. `useReducer` además te permite optimizar el rendimiento para componentes que activan actualizaciones profundas, porque [puedes pasar hacia abajo `dispatch` en lugar de *callbacks*](/docs/hooks-faq.html#how-to-avoid-passing-callbacks-down).
186185

187-
Here's the counter example from the [`useState`](#usestate) section, rewritten to use a reducer:
186+
Aquí está el ejemplo del contador de la sección [`useState`], reescrito para usar un reductor:
188187

189188
```js
190189
const initialState = {count: 0};
@@ -212,9 +211,9 @@ function Counter({initialCount}) {
212211
}
213212
```
214213

215-
#### Specifying the initial state {#specifying-the-initial-state}
214+
#### Especificar el estado inicial {#specifying-the-initial-state}
216215

217-
There’s two different ways to initialize `useReducer` state. You may choose either one depending on the use case. The simplest way to pass the initial state as a second argument:
216+
Hay dos formas diferentes de inicializar el estado de `useReducer`. Puedes elegir uno dependiendo de tu caso de uso. La forma más simple para pasar el estado inicial es como un segundo argumento:
218217

219218
```js{3}
220219
const [state, dispatch] = useReducer(
@@ -223,17 +222,17 @@ There’s two different ways to initialize `useReducer` state. You may choose ei
223222
);
224223
```
225224

226-
>Note
225+
>Nota
227226
>
228-
>React doesn’t use the `state = initialState` argument convention popularized by Redux. The initial value sometimes needs to depend on props and so is specified from the Hook call instead. If you feel strongly about this, you can call `useReducer(reducer, undefined, reducer)` to emulate the Redux behavior, but it's not encouraged.
227+
>React no utiliza la convención del argumento `state = initialState` popularizada por Redux. El valor inicial a veces necesita tener una dependencia en las props y por tanto se especifica en cambio en la llamada al Hook. Si te parece muy importante, puedes llamar a `useReducer(reducer, undefined, reducer)` para emular el comportamiento de Redux, pero no se recomienda
229228
230-
#### Lazy initialization {#lazy-initialization}
229+
#### Inicialización diferida {#lazy-initialization}
231230

232-
You can also create the initial state lazily. To do this, you can pass an `init` function as the third argument. The initial state will be set to `init(initialArg)`.
231+
También puedes crear el estado inicial de manera diferida. Para hacerlo, le puedes pasar una función `init` como tercer argumento. El estado inicial será establecido como `init(initialArg)`.
233232

234-
It lets you extract the logic for calculating the initial state outside the reducer. This is also handy for resetting the state later in response to an action:
233+
Esto te permite extraer la lógica para calcular el estado inicial fuera del reductor. También es útil para reiniciar el estado luego en respuesta a una acción:
235234

236-
```js{1-3,11-12,21,26}
235+
```js{1-3,11-12,19,24}
237236
function init(initialCount) {
238237
return {count: initialCount};
239238
}
@@ -247,9 +246,7 @@ function reducer(state, action) {
247246
case 'reset':
248247
return init(action.payload);
249248
default:
250-
// Un reducer siempre debe devolver un estado válido.
251-
// Alternativamente, puede lanzar un error si se envía una acción no válida.
252-
return state;
249+
throw new Error();
253250
}
254251
}
255252
@@ -269,11 +266,9 @@ function Counter({initialCount}) {
269266
}
270267
```
271268

272-
#### Bailing out of a dispatch {#bailing-out-of-a-dispatch}
273-
274-
If you return the same value from a Reducer Hook as the current state, React will bail out without rendering the children or firing effects. (React uses the [`Object.is` comparison algorithm](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is#Description).)
269+
#### Evitar un *dispatch* {#bailing-out-of-a-dispatch}
275270

276-
`useReducer` suele ser preferible a `useState` cuando tiene una lógica de estado compleja que involucra múltiples subvalores. También le permite optimizar el rendimiento de los componentes que activan actualizaciones profundas porque [puede pasar `dispatch` en lugar de callbacks](/docs/hooks-faq.html#how-to-avoid-passing-callbacks-down).
271+
Si devuelves el mismo valor del estado actual desde un Hook reductor, React evitará el renderizado de los hijos y disparar efectos. (React utiliza el [algoritmo de comparación `Object.is`](https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Objetos_globales/Object/is#Description)).
277272

278273
### `useCallback` {#usecallback}
279274

@@ -302,15 +297,15 @@ Pase un callback en línea y un arreglo de entradas. `useCallback` devolverá un
302297
const memoizedValue = useMemo(() => computeExpensiveValue(a, b), [a, b]);
303298
```
304299

305-
Retorna un valor [memorizado](https://en.wikipedia.org/wiki/Memoization).
300+
Devuelve un valor [memorizado](https://en.wikipedia.org/wiki/Memoization).
306301

307-
Pase una función de "crear" y un arreglo de entradas. `useMemo` solo volverá a calcular el valor memorizado cuando una de las entradas haya cambiado. Esta optimización ayuda a evitar cálculos costosos en cada render.
302+
Pasa una función de "crear" y un arreglo de entradas. `useMemo` solo volverá a calcular el valor memorizado cuando una de las entradas haya cambiado. Esta optimización ayuda a evitar cálculos costosos en cada render.
308303

309304
Recuerde que la función pasada a `useMemo` se ejecuta durante el renderizado. No hagas nada allí que normalmente no harías al renderizar. Por ejemplo, los efectos secundarios pertenecen a `useEffect`, no a` useMemo`.
310305

311306
Si no se proporciona un arreglo, se calculará un nuevo valor cada vez que se pase una nueva instancia de función como primer argumento. (Con una función en línea, en cada render).
312307

313-
**Puede confiar en `useMemo` como una optimización del rendimiento, no como una garantía semántica.** En el futuro, React puede elegir "olvidar" algunos valores previamente memorizados y recalcularlos en el próximo render, por ejemplo. para liberar memoria para componentes fuera de pantalla. Escriba su código para que aún funcione sin `useMemo` - y luego agréguelo para optimizar el rendimiento.
308+
**Puede confiar en `useMemo` como una optimización del rendimiento, no como una garantía semántica.** En el futuro, React puede elegir "olvidar" algunos valores previamente memorizados y recalcularlos en el próximo renderizado, por ejemplo para liberar memoria para componentes fuera de pantalla. Escribe tu código para que aún funcione sin `useMemo` - y luego agrégalo para optimizar el rendimiento.
314309

315310
> Nota
316311
>
@@ -322,9 +317,9 @@ Si no se proporciona un arreglo, se calculará un nuevo valor cada vez que se pa
322317
const refContainer = useRef(initialValue);
323318
```
324319

325-
`useRef` returns a mutable ref object whose `.current` property is initialized to the passed argument (`initialValue`). The returned object will persist for the full lifetime of the component.
320+
`useRef` devuelve un objeto *ref* mutable cuya propiedad `.current` se inicializa con el argumento pasado (`initialValue`). El objeto devuelto se mantendrá persistente durante la vida completa del componente.
326321

327-
A common use case is to access a child imperatively:
322+
Un caso de uso común es para acceder a un hijo imperativamente:
328323

329324
```js
330325
function TextInputWithFocusButton() {
@@ -403,15 +398,9 @@ function useFriendStatus(friendID) {
403398

404399
> Consejo
405400
>
406-
<<<<<<< HEAD
407-
> No recomendamos agregar valores de depuración a cada Hook personalizado. Es más valioso para los Hooks personalizados que forman parte de las bibliotecas compartidas.
408-
=======
409-
> We don't recommend adding debug values to every custom Hook. It's most valuable for custom Hooks that are part of shared libraries.
410-
411-
#### Defer formatting debug values {#defer-formatting-debug-values}
412-
>>>>>>> aada3a308493614b7d5b4b438b5c345d7ecc6c53
401+
> No recomendamos agregar valores de depuración a cada Hook personalizado. Es más valioso para los Hooks personalizados que forman parte de bibliotecas compartidas.
413402
414-
#### Aplazar el formato de los valores de depuración
403+
#### Aplazar el formato de los valores de depuración {#defer-formatting-debug-values}
415404

416405
En algunos casos, formatear un valor para mostrar puede ser una operación costosa. También es innecesario a menos que un Hook sea realmente inspeccionado.
417406

0 commit comments

Comments
 (0)