当前位置:首页 > React

react 实现router

2026-01-26 15:19:48React

如何在 React 中实现路由

React 本身不提供内置的路由功能,但可以通过第三方库 react-router-dom 实现。以下是具体实现方法:

安装 react-router-dom

确保项目已初始化并安装 React,然后通过 npm 或 yarn 安装 react-router-dom

npm install react-router-dom
# 或
yarn add react-router-dom

基本路由配置

在项目的入口文件(如 App.js)中配置路由。以下是一个基础示例:

import { BrowserRouter as Router, Route, Routes } from 'react-router-dom';
import Home from './components/Home';
import About from './components/About';
import Contact from './components/Contact';

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

export default App;

导航链接

使用 Link 组件实现页面间的导航,避免页面刷新:

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

function Navbar() {
  return (
    <nav>
      <Link to="/">Home</Link>
      <Link to="/about">About</Link>
      <Link to="/contact">Contact</Link>
    </nav>
  );
}

动态路由与参数传递

通过 useParams 获取动态路由参数:

import { Route, Routes } from 'react-router-dom';
import UserProfile from './components/UserProfile';

function App() {
  return (
    <Routes>
      <Route path="/user/:id" element={<UserProfile />} />
    </Routes>
  );
}

// UserProfile 组件中获取参数
import { useParams } from 'react-router-dom';

function UserProfile() {
  const { id } = useParams();
  return <div>User ID: {id}</div>;
}

嵌套路由

嵌套路由可用于布局复杂的页面结构:

<Routes>
  <Route path="/dashboard" element={<Dashboard />}>
    <Route path="profile" element={<Profile />} />
    <Route path="settings" element={<Settings />} />
  </Route>
</Routes>

在父路由组件中使用 Outlet 渲染子路由:

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

function Dashboard() {
  return (
    <div>
      <h1>Dashboard</h1>
      <Outlet /> {/* 子路由在此渲染 */}
    </div>
  );
}

编程式导航

通过 useNavigate 实现编程式跳转:

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

function LoginButton() {
  const navigate = useNavigate();
  return (
    <button onClick={() => navigate('/dashboard')}>
      Login
    </button>
  );
}

路由守卫

通过封装路由组件实现权限控制:

function PrivateRoute({ element }) {
  const isAuthenticated = checkAuth(); // 自定义认证逻辑
  return isAuthenticated ? element : <Navigate to="/login" />;
}

// 使用示例
<Route path="/admin" element={<PrivateRoute element={<AdminPanel />} />} />

注意事项

react 实现router

  • 使用 BrowserRouter 需要服务器支持(如配置重定向规则)。
  • 静态站点可使用 HashRouter 避免服务器配置问题。
  • 动态导入(懒加载)路由组件可优化性能:
    const About = lazy(() => import('./components/About'));
    <Suspense fallback={<div>Loading...</div>}>
      <Route path="/about" element={<About />} />
    </Suspense>

标签: reactrouter
分享给朋友:

相关文章

react native 如何

react native 如何

React Native 开发基础 React Native 是一个用于构建跨平台移动应用的框架,允许开发者使用 JavaScript 和 React 编写代码,同时生成原生 iOS 和 Androi…

如何用react

如何用react

使用React的基本步骤 安装Node.js和npm 确保系统已安装Node.js和npm。Node.js自带npm,可从官网下载安装包。安装完成后,通过命令行验证版本: node -v npm -…

react如何添加图片

react如何添加图片

在React中添加图片的方法 使用import导入本地图片 将图片文件放在项目目录中(如src/assets),通过import语句引入后作为src属性值: import logo from './…

react如何获取路由

react如何获取路由

获取当前路由路径 在React中获取当前路由路径可以通过react-router-dom提供的useLocation钩子。useLocation返回一个包含当前路由信息的对象,其中pathname属性…

react native 如何打包

react native 如何打包

打包 React Native 应用 Android 打包 生成签名密钥文件: keytool -genkey -v -keystore my-release-key.keystore -alias…

如何全局安装react

如何全局安装react

全局安装React的方法 全局安装React通常指的是安装React相关的命令行工具或脚手架,以便在任何项目中使用。以下是具体步骤: 安装create-react-app工具 create-rea…