Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

243
Visualizações
La función "Obtener y cargar" provoca el error "No se puede realizar una actualización de estado de React en un componente desmontado"

Soy bastante nuevo en reaccionar nativo y encontré una solución simple del tutorial para buscar y cargar el caso

 export const useFetching = (callback) => { const [isLoading, setIsLoading] = useState(false); const [error, setError] = useState(''); const fetching = async(data) => { try{ setIsLoading(true); await callback(data); } catch(e) { setError(e.message); } finally { setIsLoading(false); } } return [fetching, isLoading, error]; }

Lo uso con la función de registro de los documentos de navegación de reacción como una devolución de llamada, que se supone que cambia la pantalla a la aplicación principal:

 signIn: async (data) => { const token = await AuthManager.login(data); if (token) dispatch({ type: 'SIGN_IN', token: 'dummy-auth-token' });

Pero cuando lo llamo, aparece "No se puede realizar una actualización de estado de React en un componente desmontado". Descubrí que:

  1. El bloque "finalmente" de useFetching provoca el error
  2. UseEffect vacío useEffect(() => {return () => {}},[]) insertado en la pantalla de inicio de sesión elimina el problema

Me pregunto, ¿hay alguna solución normal en este caso y por qué useEffect ayuda aquí?

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Cambiar el estado en un componente desmontado es una medida ilegal en reaccionar.

Este es un plan de eventos simple en el ciclo de vida de su componente:

  1. Solicitud de API enviada
  2. El componente fue desmontado
  3. La solicitud de API regresa con datos a su aplicación
  4. Ooooops, la persona que llama a la API (en su caso, es la función de búsqueda) ve que el componente se desmontó y devuelve un error, por lo que su aplicación ejecuta este bloque de código: catch(e) { setError(e.message); } , pero hay un problema: setState (setError).

finalmente, el código de bloque también se ejecuta, por lo que debe verificar si el componente está montado antes de setState.

Solución simple

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda