React Academy · Lección

Navegación con Expo Router

Configure Expo Router para la navegación basada en archivos, con rutas tipadas y deep linking.

Lección 3 de 413 pasos

Navegación con Expo Router es una lección gratuita de React Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de React Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de React Academy incluye 4 lecciones en total.

¿Qué es Expo Router?

Expo Router es una biblioteca de enrutamiento basado en archivos para React Native (desarrollada sobre React Navigation). Al igual que App Router de Next.js, la estructura de archivos define las rutas de navegación.

Instalación

Cree un proyecto nuevo de Expo con Expo Router preconfigurado.

# Create new project:
npx create-expo-app@latest my-app --template tabs

# Or add to existing Expo project:
npx expo install expo-router react-native-safe-area-context react-native-screens

Rutas basadas en archivos

Los archivos del directorio app/ se convierten automáticamente en rutas. index.tsx es la raíz y [id].tsx es un segmento dinámico.

app/
  _layout.tsx       # root layout (Stack navigator)
  index.tsx          # → / (home screen)
  profile.tsx        # → /profile
  posts/
    _layout.tsx      # posts stack layout
    index.tsx        # → /posts
    [id].tsx         # → /posts/123 (dynamic)

Diseño raíz

El archivo raíz _layout.tsx envuelve todas las pantallas con proveedores y define el navegador de nivel superior.

// app/_layout.tsx
import { Stack } from 'expo-router';

export default function RootLayout() {
  return (
    <Stack>
      <Stack.Screen name="index" options={{ title: 'Home' }} />
      <Stack.Screen name="profile" options={{ title: 'Profile' }} />
    </Stack>
  );
}

Navegación con Link

Utilice el componente Link de expo-router para la navegación declarativa, de forma similar a next/link.

import { Link } from 'expo-router';

function HomeScreen() {
  return (
    <Link href="/profile">Go to Profile</Link>
  );
}

Navegación con useRouter

Utilice useRouter() para la navegación imperativa: avanzar, reemplazar o volver atrás mediante programación.

import { useRouter } from 'expo-router';

function LoginForm() {
  const router = useRouter();

  async function handleLogin() {
    await login();
    router.replace('/dashboard');
  }
}

Rutas dinámicas

Acceda a los parámetros de la ruta con useLocalSearchParams() en un archivo de ruta dinámica.

// app/posts/[id].tsx
import { useLocalSearchParams } from 'expo-router';

export default function PostScreen() {
  const { id } = useLocalSearchParams<{ id: string }>();
  return <PostDetail postId={id} />;
}

Navegación por pestañas

Utilice Tabs de expo-router dentro de un diseño de grupo para crear una navegación por pestañas inferiores.

// app/(tabs)/_layout.tsx
import { Tabs } from 'expo-router';

export default function TabLayout() {
  return (
    <Tabs>
      <Tabs.Screen name="index" options={{ title: 'Home', tabBarIcon: ({ color }) => <HomeIcon color={color} /> }} />
      <Tabs.Screen name="explore" options={{ title: 'Explore' }} />
    </Tabs>
  );
}

Pantallas modales

Presente una pantalla como modal estableciendo presentation: 'modal' en las opciones de Stack.Screen.

// app/_layout.tsx
<Stack.Screen name="modal" options={{ presentation: 'modal', title: 'Settings' }} />

// Navigate to modal:
router.push('/modal');

Enlaces profundos

Expo Router gestiona automáticamente los enlaces profundos. Defina el esquema de URL en app.json; los enlaces como myapp://posts/123 abren la pantalla correspondiente.

// app.json
{
  "expo": {
    "scheme": "myapp"
  }
}

Patrón de autenticación

Utilice un diseño raíz que renderice condicionalmente las pantallas de autenticación o las pestañas de la aplicación según el estado de autenticación.

// app/_layout.tsx
import { Redirect } from 'expo-router';

function RootLayout() {
  const { user } = useAuth();
  if (!user) return <Redirect href="/login" />;
  return <Stack />;
}

Comprobación rápida

¿Qué hook de Expo Router lee los parámetros de una ruta dinámica, como el id en /posts/[id]?

Repaso

Expo Router utiliza un enrutamiento basado en archivos: app/index.tsx → inicio, app/[id].tsx → ruta dinámica. Defina los diseños en _layout.tsx, navegue con Link o useRouter() y lea los parámetros con useLocalSearchParams().

Gratis para empezar

Aprende React con un tutor de IA — gratis

Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.

Cursos
88
Lecciones
324

Preguntas frecuentes

¿La lección «Navegación con Expo Router» es gratis?

Sí — el texto completo de «Navegación con Expo Router» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de React Academy, actualiza a CoddyKit PRO. El curso de React Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Navegación con Expo Router»?

Configure Expo Router para la navegación basada en archivos, con rutas tipadas y deep linking. Practicas React Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar React Academy?

No se requiere experiencia previa. React Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.

¿Cuánto tiempo toma la lección «Navegación con Expo Router»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de React Academy?

Sí. Cada lección de React Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Componentes principales de React Native frente al DOM web
  2. Estilos con la API StyleSheet y Flexbox
  3. Navegación con Expo Router
  4. Acceder a las API del dispositivo: cámara, ubicación y notificaciones push
← Volver a React Academy