Una guía completa para la navegación nativa mediante la navegación de reacción

Introducción

React Native permite construir aplicaciones móviles nativas con JavaScript y React. Un aspecto crítico del desarrollo de aplicaciones móviles es la navegación: guiar a los usuarios a través de diferentes pantallas y características sin problemas. React Navigation es la biblioteca más popular, impulsada por la comunidad para implementar la navegación en aplicaciones nativas React. Proporciona una API declarativa, soporta los apilados, pestañas y los navegadores de diseños, y plataforma de gestos auténticos.

Prerrequisitos e instalación

Antes de usar la Navegación de Reacto, asegúrese de que tiene un proyecto nativo de React inicializado. Si está empezando de nuevo, utilice el CLI nativo de React o Expo. Reactar la navegación funciona con ambos.

Instalar paquetes básicos

Instalar los paquetes requeridos a través de npm o hilo. La biblioteca central y sus principales dependencias son:

npm install @react-navigation/native

Luego instala las bibliotecas de apoyo que React Navigation depende de la gestión de pantallas y el manejo de área segura:

npm install react-native-screens react-native-safe-area-context

Si está utilizando Expo, estas bibliotecas ya están incluidas. Para proyectos nativos de reacción simple, siga las instrucciones de enlace en la documentación oficial para asegurar que los módulos nativos estén conectados correctamente (autolinking maneja esto para React Native 0.60+).

Instalar un Navigator

La navegación de reacción ofrece múltiples navegadores. El navegador apilativo ] es recomendado para la mayoría de los casos de uso:

npm install @react-navigation/native-stack

Otros navegantes como las pestañas de fondo] y ] se instalan por separado:

npm install @react-navigation/bottom-tabs
npm install @react-navigation/drawer

Conceptos básicos

La Navegación de Reacto se construye alrededor de tres bloques principales de construcción:

  • NavigationContainer – el envoltorio más exterior que maneja el árbol de navegación y el estado.
  • Navigadores – componentes que definen el patrón de navegación (tapa, pestaña, cajón).
  • Creens] – componentes individuales que representan una vista o página en la aplicación.

Cada configuración de navegación debe envolverse en un . Este contenedor se coloca normalmente en la raíz del componente de aplicación.

Configuración de un navegador de Stack

El navegador de pila administra una última pila de pantallas de salida. Utiliza las animaciones y gestos de transición de la plataforma nativa por defecto.

Primero, importar los módulos necesarios:

import { NavigationContainer } from '@react-navigation/native';
import { createNativeStackNavigator } from '@react-navigation/native-stack';

Crear una instancia de navegador de pila:

const Stack = createNativeStackNavigator();

Define el navegador dentro de tu componente de aplicación:

function App() {
 return (
 <NavigationContainer>
 <Stack.Navigator>
 <Stack.Screen name="Home" component={HomeScreen} />
 <Stack.Screen name="Details" component={DetailsScreen} />
 </Stack.Navigator>
 </NavigationContainer>
 );
}

Cada requiere un prop (utilizado para la navegación) y un prop (el componente de Reacto para renderizar).

Creando Pantallas y Navegando

Las pantallas son componentes estándar React. Reciben dos elementos importantes: y . El objeto proporciona métodos para moverse entre las pantallas. A continuación se muestra una pantalla típica de la casa:

function HomeScreen({ navigation }) {
 return (
 <View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
 <Text>Home Screen</Text>
 <Button
 title="Go to Details"
 onPress={() => navigation.navigate('Details')}
 />
 </View>
 );
}

La pantalla Detalles no necesita utilizar la propulsión de navegación a menos que necesite navegar más lejos.

function DetailsScreen({ route }) {
 return (
 <View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
 <Text>Details Screen</Text>
 </View>
 );
}

Métodos de navegación

La Navegación de Reacto proporciona varios métodos a través del prop:

  • navigate(nombre, params)] – se mueve a una pantalla, reutilizando una instancia existente si existe en la pila.
  • push(nombre, params)] – siempre empuja una nueva pantalla en la pila, incluso si la misma pantalla ya está en la pila.
  • goBack()] – navega a la pantalla anterior en la pila.
  • remplaza(nombre, params)] – reemplaza la pantalla actual con una nueva, eliminando la corriente de la historia.
  • reset(state)] – reasienta todo el estado de navegación a un objeto estatal dado.

Por ejemplo, para empujar una nueva instancia de la pantalla Detalles y pasar parámetros:

navigation.push('Details', { itemId: 42, otherParam: 'anything' });

Parámetros Pasantes entre pantallas

Los datos pueden pasar a una pantalla a través del segundo argumento a o . La pantalla receptora accede a esos parámetros a través de .

// In HomeScreen
navigation.navigate('Details', { userId: 123 });

// In DetailsScreen
function DetailsScreen({ route }) {
 const { userId } = route.params;
 return <Text>User ID: {userId}</Text>;
}

Establecer valores predeterminados del parámetro utilizando en el componente de pantalla:

<Stack.Screen
 name="Details"
 component={DetailsScreen}
 initialParams={{ itemId: 0 }}
/>

Configuración de opciones de navegación

Cada pantalla puede personalizar su encabezado, icono de pestaña, etiqueta de cajón, etc., utilizando el prop en o el prop en el navegador.

Personalización de los jefes

<Stack.Screen
 name="Details"
 component={DetailsScreen}
 options={{
 title: 'Details',
 headerStyle: { backgroundColor: '#f4511e' },
 headerTintColor: '#fff',
 headerTitleStyle: { fontWeight: 'bold' },
 }}
/>

Se pueden configurar opciones dinámicas utilizando una función que reciba :

options={({ route }) => ({ title: route.params.name })}

Tab Navigator

La navegación de pestañas es común para las secciones de aplicaciones de alto nivel. Instalar el navegador de pestañas de abajo:

npm install @react-navigation/bottom-tabs

Cree un navegador de pestañas y combine con su pila:

import { createBottomTabNavigator } from '@react-navigation/bottom-tabs';

const Tab = createBottomTabNavigator();

function HomeTabs() {
 return (
 <Tab.Navigator>
 <Tab.Screen name="Feed" component={FeedScreen} />
 <Tab.Screen name="Profile" component={ProfileScreen} />
 </Tab.Navigator>
 );
}

Puede anidar el navegador de la pestaña dentro de un navegador de pila o viceversa. Personalizar los iconos de la pestaña usando el prop con .

Dr. Navigator

Un navegador de cajones desliza un cajón de la izquierda, revelando los elementos de navegación. Instalarlo:

npm install @react-navigation/drawer

Configuración de ejemplo:

import { createDrawerNavigator } from '@react-navigation/drawer';

const Drawer = createDrawerNavigator();

function AppDrawer() {
 return (
 <Drawer.Navigator>
 <Drawer.Screen name="Home" component={HomeScreen} />
 <Drawer.Screen name="Settings" component={SettingsScreen} />
 </Drawer.Navigator>
 );
}

Use para abrir y cerrar el cajón programadamente.

Navigadores anidados

Las aplicaciones complejas a menudo anidan navegantes (por ejemplo, un navegador de pestañas dentro de un navegador de pila). Reactar Mangos de navegación anidando con gracia. El prop proporcionado a cualquier pantalla puede llamar métodos en un navegador padre si es necesario. Use para acceder a los métodos del navegador padre.

Ejemplo: Una pila que contiene un navegador de pestañas y una pantalla de configuración:

function RootStack() {
 return (
 <Stack.Navigator>
 <Stack.Screen name="Main" component={MainTabs} options={{ headerShown: false }} />
 <Stack.Screen name="Settings" component={SettingsScreen} />
 </Stack.Navigator>
 );
}

Enlace y profundo

React Navigation soporta la conexión profunda para manejar URLs que abren pantallas específicas. Configure el prop en :

const linking = {
 prefixes: ['myapp://', 'https://myapp.com'],
 config: {
 screens: {
 Home: 'home',
 Details: 'details/:itemId',
 },
 },
};

<NavigationContainer linking={linking}>
 {/* navigators */}
</NavigationContainer>

A continuación, maneje las URL entrantes. Esto permite características como las notificaciones de empuje que se unen a una pantalla específica.

Flujos de autenticación

Muchas aplicaciones requieren navegación condicional basada en el estado de autenticación. Un patrón común es cambiar el navegador a nivel de raíz:

function App() {
 const [isSignedIn, setIsSignedIn] = useState(false);

 return (
 <NavigationContainer>
 {isSignedIn ? <AppNavigator /> : <AuthNavigator />}
 </NavigationContainer>
 );
}

Alternativamente, usa una sola pila con pantallas condicionales. Evite el apasionamiento manteniendo la promesa o estado actualizado.

Rendimiento y mejores prácticas

  • Use navegante de pila nativa] (no ]) para mejorar el rendimiento y las transiciones nativas.
  • Minimiza el número de pantallas montadas a la vez. React Navigation desmonta las pantallas ocultas por defecto para los navegantes de pila, pero para los navegantes de pestañas, puede configurar la carga perezosa.
  • Pase sólo datos primitivos a través de parámetros para evitar problemas de serialización.
  • Use o para componentes de pantalla que reenvian a menudo.
  • Evite computaciones pesadas durante las transiciones de navegación; trabajo de descarga con .
  • Siempre maneje el evento para los cambios no salvos.

Conclusión

Navegación de reacción proporciona una forma intuitiva, personalizable y performante para gestionar la navegación en aplicaciones nativas de reacción. Al dominar apilar, pestaña, cajón y navegantes anidados, junto con los flujos de paso del parámetro, conexión profunda y autenticación, puede construir experiencias móviles robustas. Para más detalles, consulte la [Reactúa[4]]