es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Error de rango en React Navigation: Se ha superado el tamaño máximo de llamadas a pila (profundidad de pila nativa).

Tengo una pantalla en la que quiero que el usuario permanezca. Si quiere irse, quiero que vaya a una pantalla específica. Si lo hago de esta manera:

js
useEffect(() => {
navigation.addListener(“beforeRemove”, (e) => {
e.preventDefault()
navigation.popToTop()
})
}, [navigation])

Obtengo este error: RangeError: Maximum call stack size exceeded (profundidad de pila nativa)

Incluso si cambio navigation.popToTop() por otra cosa (por ejemplo, navigation.navigate(“Cuenta”)) obtendré el mismo error :/

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que estás encontrando un bucle infinito. El gancho useEffect se ejecuta cada vez que se renderiza el componente, y navigation.addListener está agregando un nuevo oyente cada vez.

    Podrías intentar usar el gancho useCallback para asegurarte de que navigation.addListener solo se llame una vez:

    const handleBeforeRemove = useCallback(() => {
      navigation.popToTop();
    }, [navigation]);
    
    useEffect(() => {
      navigation.addListener("beforeRemove", handleBeforeRemove);
    }, [navigation, handleBeforeRemove]);
    

Comments are closed.