React Router DOM v6

278 阅读2分钟

React Router 是一个用于构建 React 应用程序中导航的强大库。随着 v6 版本的发布,许多新特性和改进使得使用路由变得更加简单和直观。本教程将带您快速上手,了解如何在 React 应用中使用 React Router DOM v6。

1. 安装 React Router

首先,确保您已经创建了一个 React 应用。如果没有,可以使用 Create React App 创建一个:

bash
复制代码
npx create-react-app my-app
cd my-app

然后,安装 react-router-dom

bash
复制代码
npm install react-router-dom

2. 创建基本的路由结构

在您的应用中,创建一个简单的路由结构。首先,打开 src 目录,并创建一个新的文件夹 pages。在该文件夹中,创建几个组件,例如 Home.jsAbout.jsNotFound.js

jsx
复制代码
// src/pages/Home.js
import React from 'react';

const Home = () => {
  return <h1>首页</h1>;
};

export default Home;

// src/pages/About.js
import React from 'react';

const About = () => {
  return <h1>关于我们</h1>;
};

export default About;

// src/pages/NotFound.js
import React from 'react';

const NotFound = () => {
  return <h1>页面未找到</h1>;
};

export default NotFound;

3. 设置 Router

src 目录下打开 App.js,并配置路由:

jsx
复制代码
// src/App.js
import React from 'react';
import { BrowserRouter as Router, Routes, Route } from 'react-router-dom';
import Home from './pages/Home';
import About from './pages/About';
import NotFound from './pages/NotFound';

const App = () => {
  return (
    <Router>
      <Routes>
        <Route path="/" element={<Home />} />
        <Route path="/about" element={<About />} />
        <Route path="*" element={<NotFound />} />
      </Routes>
    </Router>
  );
};

export default App;

解释:

  • BrowserRouter:用于包裹整个应用,使其支持路由。
  • Routes:是 v6 中的一个新组件,替代了 Switch
  • Route:每个 Route 定义了一个路径及其对应的组件。path="*" 用于捕获未匹配的路径并显示 NotFound 组件。

4. 导航

为了在不同页面之间导航,您可以使用 Link 组件。在 App.js 中,添加导航链接:

jsx
复制代码
import { Link } from 'react-router-dom';

// 在 App 组件中添加导航
const App = () => {
  return (
    <Router>
      <nav>
        <Link to="/">首页</Link>
        <Link to="/about">关于我们</Link>
      </nav>
      <Routes>
        <Route path="/" element={<Home />} />
        <Route path="/about" element={<About />} />
        <Route path="*" element={<NotFound />} />
      </Routes>
    </Router>
  );
};

5. 嵌套路由

React Router v6 支持嵌套路由。您可以创建子路由。假设我们想要在 About 页面中添加一个子路由,例如 team

首先,修改 About.js 文件:

jsx
复制代码
// src/pages/About.js
import React from 'react';
import { Link, Routes, Route } from 'react-router-dom';

const Team = () => {
  return <h2>团队介绍</h2>;
};

const About = () => {
  return (
    <div>
      <h1>关于我们</h1>
      <nav>
        <Link to="team">团队</Link>
      </nav>
      <Routes>
        <Route path="team" element={<Team />} />
      </Routes>
    </div>
  );
};

export default About;

6. 使用 URL 参数

React Router v6 还支持 URL 参数。您可以在路由中定义动态部分。例如,添加一个用户详情页:

src/pages 文件夹中创建 User.js

jsx
复制代码
// src/pages/User.js
import React from 'react';
import { useParams } from 'react-router-dom';

const User = () => {
  const { id } = useParams();
  return <h2>用户 ID: {id}</h2>;
};

export default User;

然后在 App.js 中添加路由:

jsx
复制代码
import User from './pages/User';

const App = () => {
  return (
    <Router>
      <nav>
        <Link to="/">首页</Link>
        <Link to="/about">关于我们</Link>
        <Link to="/user/1">用户 1</Link>
      </nav>
      <Routes>
        <Route path="/" element={<Home />} />
        <Route path="/about" element={<About />} />
        <Route path="/user/:id" element={<User />} />
        <Route path="*" element={<NotFound />} />
      </Routes>
    </Router>
  );
};

7. 总结

React Router DOM v6 简化了路由的使用,使得路由配置更加直观和灵活。您可以轻松地创建多层嵌套路由、动态参数以及简化的 API。通过以上步骤,您可以在自己的 React 应用中快速实现路由功能。