En este ejemplo, explicaremos cómo se puede regresar a páginas anteriores en la navegación de React Native utilizando las herramientas que proporciona la biblioteca @react-navigation/native
. Analizaremos dos métodos importantes: goBack()
y StackActions.popToTop()
.
Entendiendo el ejemplo
El componente SettingsScreen
incluye dos botones que permiten realizar diferentes acciones de navegación hacia páginas previas en la pila de navegación:
- Botón “regresar”: Utiliza el método
goBack()
para volver a la página inmediatamente anterior. - Botón “Home”: Utiliza
StackActions.popToTop()
para regresar directamente a la página raíz (la primera página en la pila de navegación).
Desglose del código
El método goBack()
<PrimaryButton
onPress={() => navigator.goBack()}
text="regresar"
/>
-
Qué hace:
Este método retrocede a la pantalla inmediatamente anterior en la pila de navegación. Si no hay pantallas en la pila (es decir, si ya estás en la pantalla raíz), no hará nada. -
Cuándo usarlo:
Úsalo cuando quieras permitir al usuario regresar de manera secuencial por la pila de navegación, tal como un botón de “volver” estándar en aplicaciones móviles.
El método StackActions.popToTop()
<PrimaryButton
onPress={() => navigator.dispatch(StackActions.popToTop())}
text="Home"
/>
-
Qué hace:
Este método elimina todas las pantallas de la pila de navegación, excepto la primera (generalmente la pantalla raíz). Como resultado, lleva al usuario directamente a la pantalla inicial. -
Cómo funciona:
StackActions.popToTop()
es parte de las acciones avanzadas de navegación que permite modificar directamente el estado de la pila. Al ejecutarlo, elimina todas las pantallas intermedias, garantizando que el usuario regrese a la raíz. -
Cuándo usarlo:
Es útil cuando quieres dar al usuario la opción de “reiniciar” la navegación y volver al punto de inicio, como un botón de “Inicio” o “Menú principal”.
Cómo funciona la pila de navegación
La navegación basada en pilas (Stack Navigation) utiliza una estructura de tipo LIFO (Last In, First Out). Cada vez que navegas a una nueva pantalla, esta se apila sobre las anteriores. Cuando regresas con goBack()
o popToTop()
, se van “sacando” pantallas de esta pila:
goBack()
: Retira solo la pantalla actual y muestra la inmediatamente anterior.popToTop()
: Retira todas las pantallas excepto la primera.
Por ejemplo, si tu pila de navegación se ve así:
[Home -> Products -> Product -> Settings]
-
goBack()
desdeSettings
llevará al usuario de vuelta aProduct
.
Pila resultante:[Home -> Products -> Product]
. -
popToTop()
desdeSettings
llevará al usuario directamente aHome
.
Pila resultante:[Home]
.
Conclusión
Este ejemplo muestra cómo implementar navegación hacia páginas anteriores utilizando las herramientas proporcionadas por React Navigation. La diferencia principal entre goBack()
y popToTop()
es el alcance del retroceso:
goBack()
es útil para navegar paso a paso hacia atrás.popToTop()
es ideal para un reinicio rápido hacia la pantalla inicial.
Ambas herramientas son fundamentales para crear experiencias de navegación intuitivas y flexibles en aplicaciones móviles.