当前位置:首页 > React

react中如何路由

2026-02-26 08:35:56React

路由基础概念

在React中,路由用于管理不同页面或视图之间的导航,无需重新加载整个页面。核心库是react-router-dom,需通过npm或yarn安装:

npm install react-router-dom

基本路由配置

  1. BrowserRouter组件
    包裹整个应用,提供路由上下文:

    import { BrowserRouter as Router } from 'react-router-dom';
    function App() {
      return <Router>{/* 其他组件 */}</Router>;
    }
  2. Route组件
    定义路径与组件的映射关系:

    import { Route } from 'react-router-dom';
    <Route path="/about" component={About} />

    或使用element属性(v6版本推荐):

    <Route path="/about" element={<About />} />
  3. Switch组件(v5)或Routes(v6)
    v5中Switch确保仅匹配第一个符合条件的路由:

    import { Switch, Route } from 'react-router-dom';
    <Switch>
      <Route path="/" exact component={Home} />
      <Route path="/users" component={Users} />
    </Switch>

    v6中改用Routes,且exact不再需要:

    import { Routes, Route } from 'react-router-dom';
    <Routes>
      <Route path="/" element={<Home />} />
      <Route path="/users" element={<Users />} />
    </Routes>

导航与链接

  1. Link组件
    生成不会刷新页面的导航链接:

    import { Link } from 'react-router-dom';
    <Link to="/about">关于</Link>
  2. 编程式导航
    通过useNavigate钩子(v6)或history对象(v5)跳转:

    // v6
    import { useNavigate } from 'react-router-dom';
    function Button() {
      const navigate = useNavigate();
      return <button onClick={() => navigate('/profile')}>跳转</button>;
    }

动态路由与参数

  1. 路径参数
    使用冒号语法定义动态段,通过useParams获取:

    <Route path="/user/:id" element={<UserDetail />} />
    // 组件内
    import { useParams } from 'react-router-dom';
    function UserDetail() {
      const { id } = useParams();
      return <div>User ID: {id}</div>;
    }
  2. 查询参数
    通过useSearchParams(v6)或URLSearchParams解析:

    import { useSearchParams } from 'react-router-dom';
    function Search() {
      const [searchParams] = useSearchParams();
      const query = searchParams.get('q');
      return <div>搜索词: {query}</div>;
    }

嵌套路由

v6中通过<Outlet>实现嵌套路由的组件渲染:

// 父路由配置
<Route path="/dashboard" element={<Dashboard />}>
  <Route path="stats" element={<Stats />} />
</Route>

// Dashboard组件内
import { Outlet } from 'react-router-dom';
function Dashboard() {
  return (
    <div>
      <h1>仪表盘</h1>
      <Outlet /> {/* 子路由内容在此渲染 */}
    </div>
  );
}

重定向与404处理

  1. 重定向
    使用Navigate组件(v6)或Redirect(v5):

    // v6
    import { Navigate } from 'react-router-dom';
    <Route path="/old" element={<Navigate to="/new" replace />} />
  2. 404页面
    在路由列表最后添加path="*"的兜底路由:

    <Route path="*" element={<NotFound />} />

路由守卫

通过高阶组件或自定义逻辑控制访问权限:

react中如何路由

function PrivateRoute({ element }) {
  const isAuthenticated = checkAuth();
  return isAuthenticated ? element : <Navigate to="/login" />;
}

// 使用
<Route path="/admin" element={<PrivateRoute element={<Admin />} />} />

以上方法覆盖了React路由的核心用法,适用于大多数场景。根据项目需求选择v5或v6版本,注意API差异。

标签: 路由react
分享给朋友:

相关文章

vue实现点击跳转路由

vue实现点击跳转路由

vue实现点击跳转路由的方法 在Vue中实现点击跳转路由,可以通过以下几种方式完成,具体取决于项目使用的路由管理工具(如Vue Router)以及需求场景。 使用router-link组件 rout…

react如何发布

react如何发布

发布React应用的步骤 构建生产版本 使用以下命令生成优化后的生产版本代码,代码会被压缩并移除开发环境中的调试工具: npm run build 构建完成后会生成build文件夹,包含所有静态资源…

react如何分

react如何分

React 分页实现方法 在 React 中实现分页功能可以通过多种方式完成,以下是几种常见的方法: 使用状态管理分页数据 在组件内部维护当前页码和每页数据量的状态,通过计算切片数据实现分页。…

react如何减少伤病

react如何减少伤病

减少React应用中的性能问题(避免"伤病") 优化React应用性能需要从组件渲染、状态管理和外部依赖等多方面入手。以下是关键优化策略: 使用React.memo进行组件记忆 对函数组件使用Rea…

react项目如何调试

react项目如何调试

使用浏览器开发者工具 React项目调试最直接的方法是使用浏览器内置的开发者工具(Chrome DevTools/Firefox Developer Tools)。打开开发者工具后,切换到“Sourc…

react 如何设置 代理

react 如何设置 代理

在 React 中设置代理 在开发过程中,为了跨域请求后端 API,可以通过配置代理来解决。以下是几种常见的设置代理的方法: 使用 package.json 配置代理 在 package.json…