React Router(用法介绍)

React Router 是一个用于在 React 应用中处理路由的库。它允许你定义应用程序中的多个页面,并在 URL 改变时显示不同的内容。

要使用 React Router,你需要首先安装它:

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

然后,在你的应用中引入所需的组件和函数:

jsx 复制代码
import {
  BrowserRouter as Router,
  Switch,
  Route,
  Link,
  useParams,
  useRouteMatch,
  useHistory,
  useLocation,
  Redirect,
  Prompt
} from 'react-router-dom';

接下来,你可以定义你的路由。下面是一个简单的例子:

jsx 复制代码
function App() {
  return (
    <Router>
      <div>
        <nav>
          <ul>
            <li>
              <Link to="/">Home</Link>
            </li>
            <li>
              <Link to="/about">About</Link>
            </li>
            <li>
              <Link to="/users">Users</Link>
            </li>
          </ul>
        </nav>

        {/* A <Switch> looks through its children <Route>s and
            renders the first one that matches the current URL. */}
        <Switch>
          <Route path="/about">
            <About />
          </Route>
          <Route path="/users/:id">
            <User />
          </Route>
          <Route path="/">
            <Home />
          </Route>
        </Switch>
      </div>
    </Router>
  );
}

function Home() {
  return <h2>Home</h2>;
}

function About() {
  return <h2>About</h2>;
}

function User() {
  let { id } = useParams();
  return <h2>User: {id}</h2>;
}

在这个例子中:

  • 我们创建了一个 Router 组件来包裹我们的整个应用。
  • 在导航栏中,我们使用 Link 组件来创建链接到不同页面的按钮。
  • 使用 Switch 组件来渲染与当前 URL 匹配的第一个子 Route 组件。
  • 对于每个 Route 组件,我们指定了一个路径(path)和一个呈现该路径内容的组件。
  • 当访问 /users/:id 路径时,我们可以使用 useParams 钩子从 URL 中获取参数值。

这只是 React Router 的基本用法,实际上它还提供了许多其他功能,如嵌套路由、动态路由匹配等。

嵌套路由

你可以使用 Route 组件的 children 属性来创建嵌套路由。例如:

jsx 复制代码
function Users() {
  return (
    <div>
      <h1>Users</h1>
      <Switch>
        <Route exact path="/users">
          <AllUsers />
        </Route>
        <Route path="/users/:id">
          <SingleUser />
        </Route>
      </Switch>
    </div>
  );
}

在这里,当你访问 /users 时,将显示所有用户列表;当访问 /users/:id 时,将显示单个用户的信息。

动态路由匹配

React Router 允许你在路由路径中使用动态参数。这些参数以冒号 (:) 开头,表示它们可以接受任何字符串。例如:

jsx 复制代码
<Route path="/users/:id" component={UserProfile} />

在这个例子中,:id 是一个动态参数。当访问 /users/42/users/bob 时,都会被匹配并传递给 UserProfile 组件。

路由钩子

React Router 提供了一系列有用的钩子,可以帮助你在组件内部处理路由相关的操作。例如:

  • useParams():从 URL 中提取参数值。
  • useRouteMatch()
相关推荐
涔溪37 分钟前
Ecmascript(ES)标准
前端·elasticsearch·ecmascript
奔跑草-1 小时前
【前端】深入浅出 - TypeScript 的详细讲解
前端·javascript·react.js·typescript
羡与1 小时前
echarts-gl 3D柱状图配置
前端·javascript·echarts
咔咔库奇1 小时前
ES6进阶知识一
前端·ecmascript·es6
前端郭德纲1 小时前
浏览器是加载ES6模块的?
javascript·算法
JerryXZR1 小时前
JavaScript核心编程 - 原型链 作用域 与 执行上下文
开发语言·javascript·原型模式
帅帅哥的兜兜1 小时前
CSS:导航栏三角箭头
javascript·css3
渗透测试老鸟-九青2 小时前
通过投毒Bingbot索引挖掘必应中的存储型XSS
服务器·前端·javascript·安全·web安全·缓存·xss
龙猫蓝图2 小时前
vue el-date-picker 日期选择器禁用失效问题
前端·javascript·vue.js
夜色呦2 小时前
掌握ECMAScript模块化:构建高效JavaScript应用
前端·javascript·ecmascript