Navegación con Expo Router
Configure Expo Router para la navegación basada en archivos, con rutas tipadas y deep linking.
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-screensRutas 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().
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
- Componentes principales de React Native frente al DOM web
- Estilos con la API StyleSheet y Flexbox
- Navegación con Expo Router
- Acceder a las API del dispositivo: cámara, ubicación y notificaciones push