当前位置:首页 > React

react路由实现app切换

2026-01-27 17:22:53React

路由基础配置

在React中实现应用页面切换通常使用react-router-dom库。安装依赖包后,在入口文件(如index.js)中包裹BrowserRouter组件:

import { BrowserRouter } from 'react-router-dom';

ReactDOM.render(
  <BrowserRouter>
    <App />
  </BrowserRouter>,
  document.getElementById('root')
);

定义路由规则

在组件内部通过RoutesRoute定义路径与组件的映射关系。例如在App.js中:

import { Routes, Route } from 'react-router-dom';
import Home from './Home';
import About from './About';

function App() {
  return (
    <Routes>
      <Route path="/" element={<Home />} />
      <Route path="/about" element={<About />} />
    </Routes>
  );
}

导航跳转实现

使用Link组件或useNavigate钩子进行页面跳转。两种方式的示例如下:

import { Link, useNavigate } from 'react-router-dom';

function NavBar() {
  const navigate = useNavigate();

  return (
    <div>
      <Link to="/about">关于页面</Link>
      <button onClick={() => navigate('/')}>返回首页</button>
    </div>
  );
}

动态路由处理

通过冒号语法定义动态参数,在组件内使用useParams获取:

<Route path="/user/:id" element={<UserProfile />} />

// UserProfile组件内
import { useParams } from 'react-router-dom';
function UserProfile() {
  const { id } = useParams();
  return <div>用户ID: {id}</div>;
}

嵌套路由配置

通过Outlet组件实现嵌套路由的视图渲染:

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

// Dashboard组件内需要包含Outlet
import { Outlet } from 'react-router-dom';
function Dashboard() {
  return (
    <div>
      <h1>控制台</h1>
      <Outlet />
    </div>
  );
}

路由守卫实现

通过高阶组件或自定义包装组件实现权限控制:

function PrivateRoute({ element: Element, ...rest }) {
  const isAuthenticated = checkAuth();

  return isAuthenticated ? (
    <Element {...rest} />
  ) : (
    <Navigate to="/login" replace />
  );
}

// 使用方式
<Route path="/admin" element={<PrivateRoute element={AdminPanel} />} />

路由懒加载优化

使用React.lazySuspense实现组件按需加载:

react路由实现app切换

const About = React.lazy(() => import('./About'));

function App() {
  return (
    <Suspense fallback={<div>加载中...</div>}>
      <Routes>
        <Route path="/about" element={<About />} />
      </Routes>
    </Suspense>
  );
}

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

相关文章

react如何diff

react如何diff

React Diff 算法原理 React 的 Diff 算法是 Virtual DOM 的核心部分,用于高效更新真实 DOM。其核心思想是通过对比新旧 Virtual DOM 树的差异,最小化 DO…

react项目如何

react项目如何

创建React项目 使用create-react-app工具快速初始化项目。确保已安装Node.js(建议版本≥12.0.0),运行以下命令生成新项目: npx create-react-app m…

react如何通信

react如何通信

React 组件通信方式 React 组件间的通信方式多样,具体选择取决于组件关系和场景需求。以下是常见方法: 父子组件通信 父组件通过 props 向子组件传递数据,子组件通过回调函数通知父组件…

如何搭建react项目

如何搭建react项目

使用 Create React App 搭建项目 Create React App (CRA) 是官方推荐的快速搭建 React 项目的工具,无需配置构建工具(如 Webpack 或 Babel)。…

react 如何算精通

react 如何算精通

精通 React 的标准 精通 React 不仅需要掌握基础语法和核心概念,还需具备解决复杂问题、优化性能和架构设计的能力。以下是衡量 React 精通程度的关键维度: 核心概念与机制 组件…

vue实现路由守卫

vue实现路由守卫

路由守卫的基本概念 路由守卫是Vue Router提供的一种机制,用于在路由跳转前后执行特定的逻辑。它可以用于权限控制、页面访问限制、数据预加载等场景。Vue Router提供了多种路由守卫,包括全局…