BrowserRouter BrowserRouter 路由容器

最后更新:2026-10-28

BrowserRouter BrowserRouter 路由容器

BrowserRouter 是 react-router-dom 的路由容器:监听地址变化,把当前 location 通过 Context 提供给整棵组件树。它必须包在应用最外层,Routes、Route、Link 等 API 才能工作。

分组路由与状态管理
类型组件
引入版本React Router 6.4

ℹ️ 说明 编辑器将 JSX 转译为 JavaScript 后在沙箱中渲染真实界面;组件自动挂载,无需手写 render 调用。

📝 语法

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

createRoot(document.getElementById('root')).render(
  <BrowserRouter>            {/* 监听 History API,提供 location 上下文 */}
    <Routes>
      <Route path="/" element={<Home />} />
      <Route path="/about" element={<About />} />
    </Routes>
  </BrowserRouter>
)

⚙️ 参数

children应用内容;容器内的所有组件都能拿到路由上下文。
basename可选。部署在子路径时统一加前缀,如 basename='/app'。

返回值:无(组件)。渲染 children,并把当前 location 与导航方法广播给整棵子树。

▶ 示例

示例可直接运行:展开后自动渲染,编辑代码即时生效。

输出结果:

点导航按钮切换「页面」,当前路径加【】高亮——这正是 BrowserRouter 内部做的事:路径变 → 上下文更新 → 对应 Route 渲染(模拟演示)。

💡 要点

ℹ️ 说明 BrowserRouter 用真实 URL(/about),刷新需服务端把所有路径回退到 index.html;HashRouter 用 #/about 无此要求。
💡 提示 v6.4+ 新项目可直接用 createBrowserRouter + RouterProvider:写法更函数式,还支持 loader 数据预取。
⚠️ 注意 BrowserRouter 只能有一个实例,且必须包住所有用到路由 API 的组件,放在组件树最外层。
更多案例整理中,敬请期待。

📚 相关教程

❓ 常见问题

Q BrowserRouter 和 HashRouter 怎么选?
A 能配服务端回退就用 BrowserRouter(URL 干净、利于 SEO);静态托管改不了服务器时用 HashRouter。
Q 刷新后 404 怎么办?
A BrowserRouter 的 /about 是前端路径,服务器上并不存在;需把所有路径 rewrite 到 index.html(Nginx try_files,Vercel/Netlify 默认支持)。
Q createBrowserRouter 是什么?
A v6.4 推出的数据路由写法:先配置路由对象(含 loader/action),再用 RouterProvider 渲染,是 BrowserRouter + Routes 的功能超集。
Web-Tutorial.com

Web-Tutorial 技术团队

由多位开发者共同维护的编程教程平台。每篇教程由对应领域的开发者编写和审核,确保内容准确可靠。如发现任何问题,欢迎向我们反馈。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏