📅  最后修改于: 2023-12-03 15:18:01.063000             🧑  作者: Mango
在前后端分离的 web 开发中,前端路由非常重要。它允许用户在不刷新页面的情况下,浏览不同的视图。
npm react router dom
是一个非常流行的轻量级路由库,它使用了 React 的特性,提供了一个简单,有效的路由系统方案。
现在,我们将学习如何使用 npm react router dom
实现前端路由。
建议使用 yarn
包管理工具安装,这里我们以 yarn
为例进行演示:
yarn add react-router-dom
引入 React Router
:
import { BrowserRouter as Router, Route, Link } from 'react-router-dom'
上述代码将引入 BrowserRouter
,该组件使用了 HTML5 history API (pushState, replaceState 和 popstate 事件)来使得 UI 和 URL 同步。
定义路由:
<Router>
<div>
<Route path="/" component={Home} />
<Route path="/about" component={About} />
</div>
</Router>
上述代码定义了两个路由。当 URL 为 /
时,展示 Home
组件,当 URL 为 /about
时,展示 About
组件。
创建链接:
<ul>
<li><Link to="/">Home</Link></li>
<li><Link to="/about">About</Link></li>
</ul>
上述链接使用了 Link
组件,确保不会像 <a>
标签一样刷新页面,取而代之的是使用 history.pushState()
更改了 URL。
除了上面的基本用法,npm react router dom
还支持更多高级用法。
可以在一个路由下定义另一个路由。
<Router>
<div>
<Route path="/" component={Home} />
<Route path="/about" component={About}>
<Route path="/about/contact" component={Contact} />
<Route path="/about/faq" component={Faq} />
</Route>
</div>
</Router>
当 URL 为 /about/contact
时,展示 Contact
组件,当 URL 为 /about/faq
时,展示 Faq
组件。
路由参数允许我们在 URL 中传递数据。
<Router>
<div>
<Route path="/user/:id" component={User} />
</div>
</Router>
上述路由定义了一个名为 id
的参数。当 URL 是像 /user/123
这样的形式时,数字 123 将被传递给 User
组件。
可以在路由中定义重定向:
<Router>
<div>
<Route path="/" exact component={Home} />
<Redirect from="/home" to="/" />
</div>
</Router>
此处,我们将 /home
重定向到 /
,这样用户访问 /home
时将会看到 Home
组件。
当用户访问的 URL 没有匹配到任何路由时,我们需要定义一个 404 页面。
<Router>
<div>
<Route component={NoMatch} />
</div>
</Router>
此处,我们为 Route
组件的 component
属性提供了一个 NoMatch
组件,它将在 URL 无法匹配时被渲染。
npm react router dom
是一个强大,灵活的 React 路由系统。我们可以使用它实现丰富的前端路由。上述是一个简单的介绍,希望它可以为您提供帮助。