React Router v7 Nedir? Declarative Routing Rehberi
React Router v7 ile React uygulamalarında declarative routing. BrowserRouter, Routes, Link, useNavigate, nested routes ve protected routes.
React Router, single-page React uygulamalarında URL yönetimi için yıllardır kullanılan ve v7 ile birlikte data-aware modlar gibi yeni özellikler kazanan bir kütüphanedir. JSX tabanlı declarative API'sini ve full SPA desteğini koruyarak Routes, Link, useNavigate, useParams ve Outlet gibi yapı taşlarıyla esnek bir routing katmanı sunar. Bu rehberde infografikteki 13 bölümü açarak temel kurulumdan protected routes'a kadar tüm akışı işliyoruz.
React Router Nedir?
React uygulamaları için bir routing kütüphanesidir. Sayfalar arasında geçişi etkinleştirir, full SPA desteği sağlar ve JSX ile çalışır.
- React için routing kütüphanesi
- Sayfalar arası geçiş
- Full SPA desteği
- JSX ile çalışır
Declarative Routing Nedir?
Route'larınızı JSX olarak tanımlarsınız ve UI yapısı doğal olarak rotalara eşlenir. Daha az boilerplate, daha iyi okunabilirlik anlamına gelir.
- JSX ile route'ları tanımlar
- Okunması ve bakımı kolay
- Çoğu React projesi için ideal
Kurulum
Tek paket kurulumu yeterlidir; v7 framework olmadan da kullanılabilir.
npm install react-routerTemel Kurulum
Uygulamanızı BrowserRouter ile sarmalayın; bu router'ın history API ile çalışmasını sağlar.
import { BrowserRouter } from "react-router";
import { App } from "./App";
createRoot(document.getElementById("root")!).render(
<BrowserRouter>
<App />
</BrowserRouter>
);Route Tanımlama (Declarative Mode)
Routes ve Route bileşenleri ile path-to-element eşleşmesini deklaratif şekilde yazarsınız.
import { Routes, Route } from "react-router";
<Routes>
<Route path="/" element={<Home />} />
<Route path="/about" element={<About />} />
<Route path="/users/:id" element={<UserDetail />} />
</Routes>Navigasyon: Link
Sayfalar arası geçiş için Link bileşeni kullanılır. Tıklamada tarayıcı yenilenmez; tamamen client-side gezinme yapılır.
import { Link } from "react-router";
<nav>
<Link to="/">Ana sayfa</Link>
<Link to="/about">Hakkında</Link>
</nav>useNavigate Hook
Programatik navigasyon için useNavigate kullanılır. Form submit sonrası, login sonrası vb. yönlendirmeler için idealdir.
import { useNavigate } from "react-router";
const navigate = useNavigate();
navigate("/dashboard");
navigate(-1); // geri
navigate("/users", { replace: true });Route Parametreleri
:id gibi parametre tanımlanmış route'larda useParams ile değerleri okursunuz. Tipi tanımlamak için generic kullanmak iyi bir pratiktir.
import { useParams } from "react-router";
function UserDetail() {
const { id } = useParams();
return <p>Kullanıcı id: {id}</p>;
}Nested Routes
Route içinde Route yazarak iç içe rotalar tanımlanır. Parent component, child route'ları Outlet ile render eder.
<Routes>
<Route path="dashboard" element={<DashboardLayout />}>
<Route index element={<Overview />} />
<Route path="settings" element={<Settings />} />
</Route>
</Routes>Outlet
Outlet, child route'un render edileceği yer için bir placeholder'dır. Layout componentlerinin parça-parça UI yapmasını sağlar.
import { Outlet } from "react-router";
export function DashboardLayout() {
return (
<>
<Sidebar />
<main>
<Outlet />
</main>
</>
);
}Protected Routes
Auth gerektiren rotaları sarmalamak için bir wrapper component yazılır. Kullanıcı yetkisizse Navigate ile login sayfasına yönlendirilir.
function ProtectedRoute({ children }: { children: React.ReactNode }) {
const isAuth = useAuth();
if (!isAuth) return <Navigate to="/login" replace />;
return <>{children}</>;
}
<Route
path="/dashboard"
element={
<ProtectedRoute>
<Dashboard />
</ProtectedRoute>
}
/>Temel Kavramlar
API'nin omurgası şu birkaç parçadır:
- Routes & Route — path/element eşlemesi
- Link — declarative navigation
- useNavigate — programatik navigasyon
- useParams — URL parametreleri
- Outlet — child route placeholder
- Conditional routing — protected/redirect
Özet
React Router v7; declarative ve readable JSX-tabanlı routing sunar. Kurulumu kolay, ölçeklenmesi kolaydır ve çoğu React projesi için yeterlidir. Next.js kullanmıyorsanız SPA'larda standart tercihtir.
Sıkça Sorulan Sorular
Bu konuda en çok merak edilenler.
React Router v6 ile v7 farkı nedir?
v7 paket adını react-router olarak sadeleştirir, framework modu (Remix mirası) ve data-aware route'lar gibi yenilikler getirir. Declarative kullanım ise neredeyse aynıdır; mevcut projeler kolayca yükseltilir.
Next.js varken React Router gerekir mi?
Hayır. Next.js dosya tabanlı routing'e sahiptir. React Router yalnızca pure SPA veya Vite/CRA gibi framework'süz kurulumlarda kullanılır.
404 sayfası nasıl yapılır?
Route'ların sonunda <Route path="*" element={<NotFound />} /> tanımlamanız yeterli. Eşleşen rota olmadığında bu component gösterilir.
Query string'ler nasıl yönetilir?
useSearchParams hook'u get/set API'si sunar. Filtre, sayfa, sort gibi state'ler URL'de tutulduğunda paylaşılabilir ve geri tuşuyla uyumlu olur.
Code splitting nasıl yaparım?
React.lazy + Suspense ile route bileşenlerini lazy-load edersiniz. v7 framework modunda rota başına otomatik bölme de mümkündür.
İlgili İçerikler
Bu konuyla bağlantılı diğer infografikler.
- ReactFrontend
React Query Nedir? Axios ve TypeScript ile Mutation Rehberi
React Query (TanStack Query) ile Axios baseURL ayarı, login mutation, create user ve update user hook'larını TypeScript ile kurun.
- ReactFrontend
Next.js Nedir? Production için React Framework'ü
Next.js (App Router) ile fullstack React uygulamaları geliştirin. SSR, SSG, ISR, API routes, Server Components ve performans avantajlarının pratik rehberi.
- ReactFrontend
Zustand Nedir? Basit, Hızlı, Ölçeklenebilir State Management
Zustand ile sıfır boilerplate'e yakın global state yönetimi. Store oluşturma, selectors, async actions, persist middleware ve TypeScript desteği.
Daha fazla developer infografiği keşfedin
Yeni içerikleri kaçırmamak için ana sayfayı ziyaret edin.
Tüm infografikleri gör