Solo uso useEffect() en un lugar de mi aplicación de la siguiente manera:
useEffect(() => { document.body.addEventListener('click', bodyClicked); return () => { document.body.removeEventListener('click', bodyClicked); }; }, [bodyClicked]); function bodyClicked() { dispatch({type: 'toggleMenuPageOff'}); }Recibo esta advertencia:
react_devtools_backend.js:4061 Advertencia: no se puede realizar una actualización de estado de React en un componente desmontado. Esto no es operativo, pero indica una pérdida de memoria en su aplicación. Para solucionarlo, cancele todas las suscripciones y tareas asincrónicas en una función de limpieza useEffect. en WEBPACK_DEFAULT_EXPORT (http://localhost:3000/bundle.js:4146:70) en div
¿Por qué se trata de una pérdida de memoria y cómo puedo escribirlo correctamente para eliminar la advertencia?
Estás creando un bucle infinito. la función que está dentro del código de los componentes se recrea en cada renderizado, lo que significa que activará useEffect y, por lo tanto, se llamará una y otra vez...