Skip to content

Commit 9f11735

Browse files
Miguel Angel Chimali CobanoMiguel Angel Chimali Cobano
authored andcommitted
corrections
1 parent 22e8ed3 commit 9f11735

File tree

3 files changed

+16
-139
lines changed

3 files changed

+16
-139
lines changed

04-frameworks/01-react/03-react-hooks/11-use-context/Readme_es.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ React incorpora un mecanismo muy potente, se llama **Context**
6969
o de por ejemplo una ventana que contenga varios tabs.
7070

7171
Y a todo esto tenemos que añadirle que React incorpora un hook que se llama
72-
_use_ que hace que usarlo sea muy facil.
72+
_use_ que hace que usarlo sea muy fácil.
7373

7474
**En versiones anteriores a la 19, usar _usecontext_ para consumir contextos**
7575

04-frameworks/01-react/03-react-hooks/18-use-promise/Readme.md

Lines changed: 0 additions & 123 deletions
This file was deleted.

04-frameworks/01-react/03-react-hooks/18-use-promise/Readme_es.md

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ Vamos a ver el nuevo hook _use_, introducido en la versión 19 de react. En este
44

55
## Punto de Partida
66

7-
Este ejemplo parte del ejercicio \_06-ajax-field-change. Si no tienes el código a mano te lo dejamos por aquí.
7+
Este ejemplo parte del ejercicio _06-ajax-field-change_. Si no tienes el código a mano te lo dejamos por aquí.
88

99
_./src/demo.tsx_
1010

@@ -92,7 +92,7 @@ export const MyComponent = () => {
9292
return (
9393
```
9494

95-
Si levantamos el proyecto, abrimos las _devTools_ y vemos los logs del browser, nos damos cuenta de que hemos entrado en un bucle infinito (el log debe aparecer muchas veces). Esto se debe a como funciona el hook _use_ por dentro y a que nos hemos saltado una regla fundamental establecida por la documentación de React: al hook _use_ hay que pasarle una referencia estable.
95+
Si levantamos el proyecto, abrimos las _devTools_ y vemos los logs del browser, nos damos cuenta de que hemos entrado en un bucle infinito (el log aparece muchas veces). Esto se debe a como funciona el hook _use_ por dentro y a que nos hemos saltado una regla fundamental establecida por la documentación de React: al hook _use_ hay que pasarle una referencia estable.
9696
Esto se diferencia a lo que hemos hecho dentro de nuestro componente, donde dentro de cada ejecución _fetchMockedUsers()_ crea una nueva referencia en cada re-ejecución, por lo que el componente se va a re-ejecutar infinitas veces.
9797

9898
Para poder adaptarnos a las condiciones de uso de _use_ esa referencia debe ser estable, por lo que le deberá llegar a nuestro componente como _prop_. De esta manera esa _prop_ no se calculará en cada ejecución.
@@ -154,11 +154,11 @@ import React, { use } from "react";
154154

155155
- export const MyComponent = () => {
156156
+ export const MyComponent: React.FC<MyComponentProps> = ({ userPromise }) => {
157-
const [filter, setFilter] = React.useState("");
157+
const [filter, setFilter] = React.useState("");
158158
- const userCollection = use(fetchMockedUsers());
159159
+ const userCollection = use(userPromise);
160160

161-
return (
161+
return (
162162
```
163163

164164
Reemplazamos en _./src/app.tsx_
@@ -195,7 +195,7 @@ export interface User {
195195
+ const fetchUsers = async (filter): Promise<User[]> => {
196196
+ const res = await fetch(
197197
+ `https://jsonplaceholder.typicode.com/users?name_like=${filter}`
198-
+ );
198+
+ );
199199
+ return res.json();
200200
+ };
201201

@@ -206,10 +206,10 @@ export const MyParentComponent = () => {
206206

207207
return (
208208
<>
209-
+ <input value={filter} onChange={(e) => setFilter(e.target.value)} />
209+
+ <input value={filter} onChange={(e) => setFilter(e.target.value)} />
210210
<Suspense fallback={<>Loading</>}>
211-
- <MyComponent userPromise={mockedUsersPromise} />
212-
+ <MyComponent userPromise={usersPromise} />
211+
- <MyComponent userPromise={mockedUsersPromise} />
212+
+ <MyComponent userPromise={usersPromise} />
213213
</Suspense>
214214
</>
215215
);
@@ -223,12 +223,12 @@ _./src/demo.tsx_
223223
```diff
224224
export const MyComponent: React.FC<MyComponentProps> = ({ userPromise }) => {
225225
- const [filter, setFilter] = React.useState("");
226-
const userCollection = use(userPromise);
226+
const userCollection = use(userPromise);
227227

228-
return (
229-
<div>
228+
return (
229+
<div>
230230
- <input value={filter} onChange={(e) => setFilter(e.target.value)} />
231-
<ul>
231+
<ul>
232232
```
233233

234234
Y si quisiéramos implementar el useDebounce?
@@ -249,8 +249,8 @@ import React, { Suspense } from "react";
249249

250250
export const MyParentComponent = () => {
251251
const [filter, setFilter] = React.useState("");
252-
+ const [debouncedFilter] = useDebounce(filter, 1500);
253-
- const usersPromise = fetchUsers(filter);
252+
+ const [debouncedFilter] = useDebounce(filter, 1500);
253+
- const usersPromise = fetchUsers(filter);
254254

255255
+ const usersPromise = React.useMemo(
256256
+ () => fetchUsers(debouncedFilter),
@@ -259,7 +259,7 @@ export const MyParentComponent = () => {
259259

260260
return (
261261
<>
262-
+ <div>Debounced filter: {debouncedFilter}</div>
262+
+ <div>Debounced filter: {debouncedFilter}</div>
263263
<input value={filter} onChange={(e) => setFilter(e.target.value)} />
264264
<Suspense fallback={<>Loading</>}>
265265
```

0 commit comments

Comments
 (0)