React Academy · Aula

Navegação com Expo Router

Configure o Expo Router para navegação baseada em arquivos, com rotas tipadas e links diretos.

Aula 3 de 413 etapas

Navegação com Expo Router é uma aula grátis de React Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de React Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de React Academy inclui 4 aulas no total.

O que é o Expo Router?

O Expo Router é uma biblioteca de roteamento baseada em arquivos para React Native (construída sobre o React Navigation). Assim como o App Router do Next.js, a estrutura de arquivos define suas rotas de navegação.

Instalação

Crie um novo projeto Expo com o Expo Router pré-configurado.

# 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

Rotas baseadas em arquivos

Os arquivos no diretório app/ tornam-se rotas automaticamente. index.tsx é a raiz, e [id].tsx é um 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)

Estrutura raiz

O _layout.tsx raiz envolve todas as telas com provedores e define o navegador de nível 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>
  );
}

Navegação com Link

Use o componente Link de expo-router para navegação declarativa — semelhante a next/link.

import { Link } from 'expo-router';

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

Navegação com useRouter

Use useRouter() para navegação imperativa — avance, substitua a rota ou volte programaticamente.

import { useRouter } from 'expo-router';

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

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

Rotas dinâmicas

Acesse os parâmetros da rota com useLocalSearchParams() em um arquivo de rota dinâmica.

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

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

Navegação por abas

Use Tabs de expo-router dentro de uma estrutura de grupo para criar a navegação por abas na parte inferior.

// 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>
  );
}

Telas modais

Apresente uma tela como modal definindo presentation: 'modal' nas opções de Stack.Screen.

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

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

Links profundos

O Expo Router gerencia automaticamente os links profundos. Defina seu esquema de URL em app.json, e links como myapp://posts/123 abrirão a tela correta.

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

Padrão de autenticação

Use uma estrutura raiz que renderize condicionalmente as telas de autenticação ou as abas do aplicativo com base no estado de autenticação.

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

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

Verificação rápida

Qual gancho do Expo Router lê os parâmetros de uma rota dinâmica, como o id em /posts/[id]?

Recapitulação

O Expo Router usa roteamento baseado em arquivos: app/index.tsx → início, app/[id].tsx → rota dinâmica. Defina as estruturas em _layout.tsx, navegue com Link ou useRouter() e leia os parâmetros com useLocalSearchParams().

Grátis para começar

Aprenda React com um tutor de IA — grátis

Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.

Cursos
88
Aulas
324

Perguntas Frequentes

A aula “Navegação com Expo Router” é grátis?

Sim — o texto completo de “Navegação com Expo Router” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de React Academy, atualize para CoddyKit PRO. O curso de React Academy inclui 4 aulas no total.

O que vou aprender em “Navegação com Expo Router”?

Configure o Expo Router para navegação baseada em arquivos, com rotas tipadas e links diretos. Você pratica React Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar React Academy?

Nenhuma experiência prévia é necessária. React Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.

Quanto tempo leva a aula “Navegação com Expo Router”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de React Academy?

Sim. Cada aula de React Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Componentes principais do React Native vs DOM da Web
  2. Estilização com a API StyleSheet e Flexbox
  3. Navegação com Expo Router
  4. Acessando APIs do dispositivo: câmera, localização e notificações push
← Voltar para React Academy