Как настроить маршрутизацию в React?react-27

Настройка маршрутизации в React осуществляется с помощью библиотеки React Router (react-router-dom). Вот пошаговое руководство по настройке:

1. Установка

Сначала необходимо установить пакет:

npm install react-router-dom
# или
yarn add react-router-dom

2. Базовая настройка

Основная структура маршрутизации:

import { BrowserRouter, Routes, Route } from 'react-router-dom';

function App() {
  return (
    <BrowserRouter>
      <Routes>
        <Route path="/" element={<HomePage />} />
        <Route path="/about" element={<AboutPage />} />
        <Route path="/contact" element={<ContactPage />} />
      </Routes>
    </BrowserRouter>
  );
}

3. Навигация между страницами

Используйте компонент Link для навигации:

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

function NavBar() {
  return (
    <nav>
      <Link to="/">Главная</Link>
      <Link to="/about">О нас</Link>
      <Link to="/contact">Контакты</Link>
    </nav>
  );
}

4. Динамические маршруты

Для параметризованных URL:

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

// В компоненте UserProfile:
import { useParams } from 'react-router-dom';

function UserProfile() {
  const { id } = useParams();
  return <div>Профиль пользователя {id}</div>;
}

5. Вложенные маршруты

Для создания иерархической структуры:

<Route path="/dashboard" element={<Dashboard />}>
  <Route path="stats" element={<Stats />} />
  <Route path="settings" element={<Settings />} />
</Route>

// В компоненте Dashboard:
import { Outlet } from 'react-router-dom';

function Dashboard() {
  return (
    <div>
      <h1>Панель управления</h1>
      <Outlet /> {/* Здесь будут рендериться вложенные маршруты */}
    </div>
  );
}

6. Программная навигация

Используйте хук useNavigate:

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

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

  const handleLogin = () => {
    // Логика авторизации...
    navigate('/dashboard');
  };

  return <button onClick={handleLogin}>Войти</button>;
}

7. Обработка 404

Добавьте catch-all маршрут:

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

8. Защищенные маршруты

Пример реализации приватных маршрутов:

function PrivateRoute({ children }) {
  const isAuthenticated = checkAuth(); // Ваша функция проверки авторизации
  return isAuthenticated ? children : <Navigate to="/login" />;
}

// Использование:
<Route
  path="/admin"
  element={
    <PrivateRoute>
      <AdminPanel />
    </PrivateRoute>
  }
/>

9. Ленивая загрузка

Оптимизация с помощью React.lazy:

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

<Route
  path="/about"
  element={
    <React.Suspense fallback={<Loader />}>
      <AboutPage />
    </React.Suspense>
  }
/>

Резюмируем

  1. Установите react-router-dom
  2. Оберните приложение в BrowserRouter
  3. Определите маршруты в компоненте Routes
  4. Используйте Link для навигации
  5. Для сложных сценариев используйте:
    • Динамические параметры (useParams)
    • Вложенные маршруты (Outlet)
    • Программную навигацию (useNavigate)
  6. Реализуйте защищенные маршруты для приватных разделов
  7. Оптимизируйте загрузку с помощью React.lazy

Для большинства приложений этого достаточно. Дополнительные возможности (history management, location state) можно изучить в документации React Router.