BrowserRouter BrowserRouter: Contêiner de Roteamento

Última atualização: 2026-11-03

BrowserRouter BrowserRouter: Contêiner de Roteamento

O BrowserRouter é o contêiner de roteamento do react-router-dom: ele observa o endereço e fornece a localização atual para toda a árvore de componentes por meio de context. Ele deve envolver a camada mais externa do app para que Routes, Route, Link e as outras APIs de roteamento tenham um roteador com quem conversar. Toda navegação passa a ser um push no histórico em vez de um recarregamento completo da página, o que dá à single-page app a sensação de instantânea para o usuário.

GrupoRoteamento e Gerenciamento
TipoComponente
DesdeReact Router 6.4

ℹ️ Informação O editor transpila JSX para JavaScript e renderiza a UI real na sandbox; os componentes são montados automaticamente — sem render manual.

📝 Sintaxe

import { BrowserRouter, Routes, Route } from 'react-router-dom'

createRoot(document.getElementById('root')).render(
  <BrowserRouter>            {/* listens to the History API and provides the location context */}
    <Routes>
      <Route path="/" element={<Home />} />
      <Route path="/about" element={<About />} />
    </Routes>
  </BrowserRouter>
)

⚙️ Parâmetros

childrenO conteúdo do aplicativo; todo componente dentro do contêiner pode ler o contexto de roteamento.
basenameOpcional. Um prefixo adicionado a todos os caminhos quando o app é implantado em um sub-caminho, por exemplo, basename='/app'.

Retorna:Nada (é um componente). Ele renderiza children e transmite a localização atual e os métodos de navegação para toda a subárvore.

▶ Exemplo

O exemplo roda direto: renderiza automaticamente ao expandir e edições valem na hora.

Saída:

Clicar em um botão de navegação troca a página e o caminho atual é envolvido por colchetes — exatamente o que o BrowserRouter faz internamente: o caminho muda, o contexto é atualizado e o Route correspondente é renderizado (demonstração simulada).

💡 Pontos-chave

ℹ️ Informação O BrowserRouter usa URLs reais (/about), então um refresh exige que o servidor recaia em index.html para cada caminho; o HashRouter com #/about não tem esse requisito.
💡 Dica Desde a v6.4, um projeto novo pode usar createBrowserRouter + RouterProvider diretamente: o estilo é mais funcional e também suporta a pré-busca de dados do loader.
⚠️ Aviso Deve haver exatamente uma instância de BrowserRouter, e ela precisa envolver todo componente que usa as APIs de roteamento, por isso pertence ao topo da árvore.
Mais casos em breve.

📚 Tutoriais Relacionados

❓ Perguntas Frequentes

P Como escolher entre BrowserRouter e HashRouter?
R Use o BrowserRouter sempre que o servidor puder ser configurado com o fallback (URLs limpas, melhor SEO); use o HashRouter para hospedagem estática onde o servidor não pode ser alterado.
P Recebo um 404 após atualizar. O que fazer?
R O /about do BrowserRouter é um caminho do front-end e não existe no servidor; reescreva todos os caminhos para index.html (try_files no Nginx, suportado por padrão no Vercel e no Netlify).
P O que é createBrowserRouter?
R O estilo de data router introduzido na v6.4: você descreve as rotas em um objeto de configuração (com loaders e actions) e as renderiza com RouterProvider. É um superconjunto de BrowserRouter mais Routes.
Web-Tutorial.com

Equipe Técnica Web-Tutorial

Uma plataforma de tutoriais mantida por diversos desenvolvedores. Cada tutorial é escrito e revisado por profissionais da área correspondente. Trabalhamos para manter nosso conteúdo preciso e confiável — se encontrar algum problema, avise-nos.

100%