📜  npm react router dom - Javascript (1)

📅  最后修改于: 2023-12-03 15:18:01.063000             🧑  作者: Mango

使用 npm react router dom 实现前端路由


在前后端分离的 web 开发中,前端路由非常重要。它允许用户在不刷新页面的情况下,浏览不同的视图。

npm react router dom 是一个非常流行的轻量级路由库,它使用了 React 的特性,提供了一个简单,有效的路由系统方案。

现在,我们将学习如何使用 npm react router dom 实现前端路由。

安装

建议使用 yarn 包管理工具安装,这里我们以 yarn 为例进行演示:

yarn add react-router-dom
基本使用
  1. 引入 React Router

    import { BrowserRouter as Router, Route, Link } from 'react-router-dom'
    

    上述代码将引入 BrowserRouter,该组件使用了 HTML5 history API (pushState, replaceState 和 popstate 事件)来使得 UI 和 URL 同步。

  2. 定义路由:

    <Router>
        <div>
            <Route path="/" component={Home} />
            <Route path="/about" component={About} />
        </div>
    </Router>
    

    上述代码定义了两个路由。当 URL 为 / 时,展示 Home 组件,当 URL 为 /about 时,展示 About 组件。

  3. 创建链接:

    <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 路由系统。我们可以使用它实现丰富的前端路由。上述是一个简单的介绍,希望它可以为您提供帮助。