Для начала необходимо создать проект на Vite с поддержкой React. Это делается командой:
npm create vite@latest my-app -- --template react
cd my-app
npm install
После создания проекта требуется установить React Router:
npm install react-router-dom
Импорт и настройка роутера выполняются в корневом компоненте
приложения, обычно main.jsx:
import React from "react";
import ReactDOM from "react-dom/client";
import { BrowserRouter } from "react-router-dom";
import App from "./App.jsx";
ReactDOM.createRoot(document.getElementById("root")).render(
);
BrowserRouter отвечает за использование HTML5 History API для управления историей и маршрутизацией.
В App.jsx можно создать структуру маршрутов с помощью
компонентов Routes и Route:
import { Routes, Route } from "react-router-dom";
import Home from "./pages/Home.jsx";
import About from "./pages/About.jsx";
import NotFound from "./pages/NotFound.jsx";
function App() {
return (
} />
} />
} />
);
}
export default App;
path="/" — маршрут для главной страницы.path="/about" — маршрут для страницы «О проекте».path="*" — ловит все несуществующие маршруты и
отображает страницу ошибки.Ключевой момент: element принимает
JSX-компонент, а не функцию.
React Router позволяет создавать вложенные маршруты для сложной структуры приложений. Например:
import { Routes, Route, Outlet } from "react-router-dom";
function Dashboard() {
return (
Панель управления
);
}
function Stats() {
return Статистика;
}
function Settings() {
return Настройки;
}
function App() {
return (
}>
} />
} />
);
}
dashboard/stats,
dashboard/settings).Для перехода между маршрутами используется компонент Link и хук useNavigate:
import { Link, useNavigate } from "react-router-dom";
function Menu() {
const navigate = useNavigate();
return (
Главная
О проекте
);
}
с
корректной маршрутизацией без перезагрузки страницы.Для отображения страниц с параметрами используется синтаксис
:param:
function UserProfile() {
const { id } = useParams();
return Профиль пользователя {id};
}
} />
Можно создавать маршруты с условным рендерингом для авторизации:
function ProtectedRoute({ element, isAuth }) {
return isAuth ? element : ;
}
} />}
/>
Vite обеспечивает быстрый HMR (Hot Module Replacement), что ускоряет разработку при работе с React Router. Важно учитывать:
base) в
vite.config.js, если приложение будет размещено не в корне
сервера.index.html, что обеспечивает
корректную работу маршрутов с BrowserRouter.Пример настройки vite.config.js для SPA:
import { defineConfig } from "vite";
import react from "@vitejs/plugin-react";
export default defineConfig({
plugins: [react()],
server: {
historyApiFallback: true
},
base: "/my-app/"
});
Для оптимизации загрузки больших приложений рекомендуется использовать ленивую загрузку компонентов:
import { lazy, Suspense } from "react";
const About = lazy(() => import("./pages/About.jsx"));
Загрузка... Для обработки query-параметров используется хук useSearchParams:
import { useSearchParams } from "react-router-dom";
function Products() {
const [searchParams, setSearchParams] = useSearchParams();
const category = searchParams.get("category");
return Категория: {category};
}
setSearchParams({ category: "books" });