⊗jsrxPmATADR 49 of 57 menu

Eliminación de la duplicación de solicitudes en Redux

Esta lección nos será útil en el caso de que al iniciar la aplicación se duplique el envío de la solicitud de datos, y luego lleguen pares de productos con los mismos id, y, como consecuencia, aparezcan terribles advertencias rojas en la consola del navegador.

La razón de esto radica en una característica del montaje de componentes en React 18 y versiones superiores en modo desarrollo (dev), cuando se utiliza React.StrictMode (dicen que en modo production todo está bien con esto). Primero el componente se monta, luego se desmonta y se vuelve a montar. Por eso la solicitud se envía dos veces.

Es posible que cuando estudies este material, este doble montaje en React ya haya sido modificado de alguna manera. No profundizaremos en detalles, simplemente usaremos el hook de React useRef, que nos ayudará a evitar este inconveniente.

Abramos nuestra aplicación de productos, y en ella el archivo ProductsList.jsx. Importemos en él el hook useRef:

import { useEffect, useRef } from 'react'

Y ahora modifiquemos un poco el siguiente bloque de código con useEffect:

useEffect(() => { if (productStatus === 'idle') { dispatch(fetchProducts()) } }, [productStatus, dispatch])

Para empezar, introduzcamos una nueva variable dataFetch para useRef. Inicialmente establezcamos su propiedad current en false. Si la aplicación ya se había iniciado y, respectivamente, la solicitud había sido enviada, entonces la propiedad current ya será true, lo que significa que simplemente saldremos de la función y no se producirá una nueva solicitud de datos. Entonces, el fragmento de código mencionado anteriormente ahora será así:

const dataFetch = useRef(false) useEffect(() => { if (dataFetch.current) return dataFetch.current = true if (productStatus === 'idle') { dispatch(fetchProducts()) } }, [productStatus, dispatch])

Ahora iniciemos nuevamente nuestra aplicación y con alivio notemos la desaparición de las advertencias rojas en la consola, y veamos la lista de productos sin duplicados, ahora hay 8, como lo habíamos planeado en el servidor. Ahora en Redux DevTools las acciones, generadas durante la solicitud, ya no se repiten.

Abra su aplicación de estudiantes, y en ella el archivo StudentsList.jsx. Elimine el problema de la doble solicitud, de acuerdo con el material de la lección, si es que lo tiene.

Español
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Usamos cookies para el funcionamiento del sitio, análisis y personalización. El procesamiento de datos se realiza de acuerdo con la Política de privacidad.
aceptar todas configurar rechazar