<BrowserRouter>

<Router> 使用 HTML5 提供的 history API (pushState, replaceStatepopstate 事件) 来保持 UI 和 URL 的同步。

  1. import { BrowserRouter } from 'react-router-dom'
  2. <BrowserRouter
  3. basename={optionalString}
  4. forceRefresh={optionalBool}
  5. getUserConfirmation={optionalFunc}
  6. keyLength={optionalNumber}
  7. >
  8. <App/>
  9. </BrowserRouter>

basename: string

当前位置的基准 URL。如果你的页面部署在服务器的二级(子)目录,你需要将 basename 设置到此子目录。 正确的 URL 格式是前面有一个前导斜杠,但不能有尾部斜杠。

  1. <BrowserRouter basename="/calendar"/>
  2. <Link to="/today"/> // 渲染为 <a href="/calendar/today">

getUserConfirmation: func

当导航需要确认时执行的函数。默认使用 window.confirm

  1. // 使用默认的确认函数
  2. const getConfirmation = (message, callback) => {
  3. const allowTransition = window.confirm(message)
  4. callback(allowTransition)
  5. }
  6. <BrowserRouter getUserConfirmation={getConfirmation}/>

forceRefresh: bool

当设置为 true 时,在导航的过程中整个页面将会刷新。 只有当浏览器不支持 HTML5 的 history API 时,才设置为 true

  1. const supportsHistory = 'pushState' in window.history
  2. <BrowserRouter forceRefresh={!supportsHistory}/>

keyLength: number

location.key 的长度。默认是 6。

  1. <BrowserRouter keyLength={12}/>

children: node

渲染单一子组件(元素)