React Router 中常用的方法总结

在 React 中使用 React Router (V5版)可以实现类似于 Vue Router 的路由跳转、获取参数和编程式导航、获取路由对象等功能。以下是一些常用的方法:

  1. 编程式导航 :您可以使用 useHistory 钩子进行编程式导航。以下是一个示例:
js 复制代码
import { useHistory } from "react-router-dom";

function HomeButton() {
  let history = useHistory();

  function handleClick() {
    history.push("/home");
  }

  return (
    <button type="button" onClick={handleClick}>
      回到首页
    </button>
  );
}
  1. 重定向 :您可以使用 Redirect 组件将用户重定向到不同的页面。以下是一个示例:
js 复制代码
import { Redirect } from "react-router-dom";

function LoginPage() {
  // ... 登录逻辑

  return (
    <div>
      {isLoggedIn ? <Redirect to="/dashboard" /> : <LoginForm />}
    </div>
  );
}
  1. 前进或后退 :您可以使用 useHistory 钩子中的 goBackgoForward 函数实现前进和后退。以下是一个示例:
js 复制代码
import { useHistory } from "react-router-dom";

function BackButton() {
  let history = useHistory();

  function handleClick() {
    history.goBack();
  }

  return (
    <button type="button" onClick={handleClick}>
      后退
    </button>
  );
}

function ForwardButton() {
  let history = useHistory();

  function handleClick() {
    history.goForward();
  }

  return (
    <button type="button" onClick={handleClick}>
      前进
    </button>
  );
}
  1. 获取 URL 中的参数 :您可以使用 useParams 钩子获取 URL 中的参数。以下是一个示例:
js 复制代码
import { useParams } from "react-router-dom";

function UserDetails() {
  let { userId } = useParams();

  return (
    <div>
      <h1>User ID: {userId}</h1>
    </div>
  );
}
  1. 获取路由信息对象 :您可以使用 useRouteMatch 钩子获取有关路由的信息。以下是一个示例:
js 复制代码
import { useRouteMatch } from "react-router-dom";

function About() {
  let match = useRouteMatch();

  return (
    <div>
      <h1>About</h1>
      <p>You are now on the "About" page.</p>
      <p>The URL matched is {match.path}.</p>
    </div>
  );
}
  1. 嵌套路由 :您可以使用 Route 组件的 path 属性和 children 属性创建嵌套路由。以下是一个示例:
js 复制代码
import { Route, Switch } from "react-router-dom";

function App() {
  return (
    <Switch>
      <Route path="/admin" component={Admin}>
        <Route path="/admin/dashboard" component={Dashboard} />
        <Route path="/admin/settings" component={Settings} />
      </Route>
    </Switch>
  );
}
  1. 守卫路由 :您可以使用 Route 组件的 render 属性或 useEffect 钩子来实现路由守卫。以下是一个示例:
js 复制代码
import { Route, Redirect } from "react-router-dom";

function PrivateRoute({ component: Component, ...rest }) {
  const isAuthenticated = // ... 检查用户是否已登录

  return (
    <Route
      {...rest}
      render={props =>
        isAuthenticated ? (
          <Component {...props} />
        ) : (
          <Redirect to="/login" />
        )
      }
    />
  );
}
相关推荐
晚安日记wanna4 小时前
SSR 为什么不适合登录态从水合冲突到缓存串号
前端·react.js·面试
liangshanbo12151 天前
React useEffect 与 useLayoutEffect 面试题整理
前端·javascript·react.js
liangshanbo12151 天前
React useState 函数式更新面试题整理
前端·react.js·前端框架
光影少年1 天前
react navite process.nextTick 和 Promise.then 的执行顺序
前端·react native·react.js
lewis_lk1 天前
ReactJs状态迷思:从"常量"到"闭包陷阱"的底层逻辑
前端·react.js
薛一半1 天前
React路由初始
前端·react.js·前端框架
晓得迷路了1 天前
栗子前端技术周刊第 146 期 - React 19.3、jQuery 1.0 20 周年、Bun 1.4.2...
前端·javascript·react.js
Highcharts.js2 天前
常见报错排雷指南2:导出失败的官方解法
javascript·react.js·ecmascript·highcharts·可视化图表·导出模块失败·导出服务
今日无bug2 天前
从 0 到 1 搭建端侧 AI 项目:DeepSeek-R1 + WebGPU + React + TS + Tailwind 全栈笔记
前端·react.js·typescript
Highcharts.js2 天前
常见报错排雷指南3:兼容性问题的官方解法
前端·javascript·react.js·可视化·highcharts·报错解法