Carregando...

React Router

O React Router é uma biblioteca essencial no ecossistema React para gerenciamento de navegação em aplicações de página única (SPA). Ele permite mapear URLs para componentes específicos, garantindo que a interface do usuário seja atualizada de forma dinâmica sem recarregar a página, o que melhora significativamente a experiência do usuário e otimiza a performance da aplicação.
O uso do React Router é indicado sempre que uma aplicação React possui múltiplas vistas ou páginas, possibilitando uma navegação fluida e controlada. Ele se integra naturalmente com conceitos fundamentais do React, como componentes, gerenciamento de estado, fluxo de dados e ciclo de vida de componentes. Ao utilizar React Router, desenvolvedores podem evitar problemas comuns como prop drilling excessivo, re-renders desnecessários e mutações de estado.
Neste tutorial, o leitor aprenderá a configurar rotas estáticas e dinâmicas, utilizar o componente Link para navegação declarativa, ler parâmetros de URL com useParams e implementar rotas protegidas usando um componente de rota protegido. Além disso, serão abordadas práticas avançadas de gestão de estado e integração com o ciclo de vida do componente, sempre seguindo boas práticas de desenvolvimento React.

Exemplo Básico

jsx
JSX Code
import React from 'react';
import { BrowserRouter as Router, Routes, Route, Link } from 'react-router-dom';

function Home() {
return <h2>Página Inicial</h2>;
}

function About() {
return <h2>Sobre Nós</h2>;
}

function App() {
return ( <Router> <nav> <Link to="/">Home</Link> | <Link to="/about">Sobre</Link> </nav> <Routes>
<Route path="/" element={<Home />} />
<Route path="/about" element={<About />} /> </Routes> </Router>
);
}

export default App;

Exemplo Prático

jsx
JSX Code
import React, { useState, useEffect } from 'react';
import { BrowserRouter as Router, Routes, Route, Link, useParams, Navigate } from 'react-router-dom';

function Dashboard() {
const [user, setUser] = useState(null);

useEffect(() => {
setTimeout(() => setUser({ name: 'Mamad', role: 'admin' }), 1000);
}, []);

if (!user) return <p>Carregando...</p>;

return <h2>Bem-vindo {user.name} ao Dashboard</h2>;
}

function Profile() {
const { username } = useParams();
return <h2>Perfil do Usuário: {username}</h2>;
}

function ProtectedRoute({ children }) {
const isAuthenticated = true;
return isAuthenticated ? children : <Navigate to="/" />;
}

function App() {
return ( <Router> <nav> <Link to="/">Home</Link> | <Link to="/dashboard">Dashboard</Link> | <Link to="/profile/Mamad">Perfil</Link> </nav> <Routes>
<Route path="/" element={<h2>Página Inicial</h2>} />
<Route path="/dashboard" element={<ProtectedRoute><Dashboard /></ProtectedRoute>} />
<Route path="/profile/:username" element={<Profile />} /> </Routes> </Router>
);
}

export default App;

Neste exemplo avançado, Dashboard utiliza useState e useEffect para carregar dados de forma assíncrona, demonstrando gestão do ciclo de vida de componentes. Profile usa useParams para ler parâmetros dinâmicos da URL, evitando prop drilling.
ProtectedRoute protege rotas sensíveis, redirecionando usuários não autenticados com Navigate. Essa estrutura segue os princípios de React, promove reuso de componentes, otimiza performance e permite a criação de rotas dinâmicas e protegidas, essenciais em aplicações complexas.

Boas práticas no uso do React Router incluem criar componentes reutilizáveis, gerenciar estado de forma eficiente, utilizar rotas dinâmicas e integrar corretamente com o ciclo de vida dos componentes. Evite erros comuns como mutações diretas de estado, prop drilling excessivo e re-renders desnecessários. Use React DevTools para depuração, React.memo e useCallback para otimização de performance, e Suspense com lazy loading para componentes maiores. Rotas sensíveis devem sempre ter proteção adequada para garantir segurança.

📊 Tabela de Referência

React Element/Concept Description Usage Example
BrowserRouter Fornece contexto de navegação para a aplicação <BrowserRouter><App /></BrowserRouter>
Routes Agrupa todas as rotas da aplicação <Routes><Route path="/" element={<Home />} /></Routes>
Route Define mapeamento de URL para componente <Route path="/about" element={<About />} />
Link Navegação declarativa sem recarregar a página <Link to="/about">Sobre</Link>
useParams Lê parâmetros dinâmicos da URL const { id } = useParams();
Navigate Redirecionamento programático <Navigate to="/login" />

O React Router fornece um modelo de roteamento declarativo baseado em componentes, ideal para SPAs. Aprender a configurar rotas estáticas e dinâmicas, proteger rotas sensíveis e integrar com gerenciamento de estado e ciclo de vida de componentes prepara o desenvolvedor para construir aplicações complexas e performáticas. Como próximos passos, recomenda-se aprofundar em Hooks avançados, lazy loading, integração com Context API ou Redux, e otimização de performance. Exercícios práticos em projetos reais consolidam o aprendizado.

🧠 Teste Seu Conhecimento

Pronto para Começar

Teste Seu Conhecimento

Desafie-se com este questionário interativo e veja o quão bem você entende o tópico

4
Perguntas
🎯
70%
Para Passar
♾️
Tempo
🔄
Tentativas

📝 Instruções

  • Leia cada pergunta cuidadosamente
  • Selecione a melhor resposta para cada pergunta
  • Você pode refazer o quiz quantas vezes quiser
  • Seu progresso será mostrado no topo