React İle Bileşen Bazlı Sayfa Navigasyonu Nasıl Yapılır?

React İle Bileşen Bazlı Sayfa Navigasyonu Nasıl Yapılır?
React İle Bileşen Bazlı Sayfa Navigasyonu Nasıl Yapılır?

Gereksinimler ve Ön Hazırlık

Projeye başlamadan önce bilgisayarınızda Node.js'in güncel bir sürümünün (LTS 20 veya üzeri önerilir) yüklü olduğundan emin olmalısınız. React 19 ve React Router 7, modern JavaScript (ES6+) özelliklerini yoğun bir şekilde kullanır.

Öncelikle terminalinizi açın ve boş bir React projesi oluşturarak bağımlılıkları yükleyin:

npx create-react-app navigasyon-projesi
cd navigasyon-projesi
npm install react-router-dom

Bu komutlar, projenizin temel iskeletini kuracak ve yönlendirme işlemleri için gerekli olan kütüphaneyi projenize dahil edecektir. Kurulum tamamlandıktan sonra src dizini altında pages ve components klasörleri oluşturarak dosya yapınızı düzenlemeye başlayabilirsiniz.

React Router ile Temel Rotalama Yapısı

React'te navigasyon, tarayıcının adres çubuğundaki URL'yi dinleyen ve buna göre ilgili bileşeni render eden bir mekanizmaya dayanır. BrowserRouter, uygulamanızın en üst seviyesinde yer alarak tüm yönlendirme bağlamını yönetir.

Aşağıdaki örnekte, ana uygulama dosyanızda (App.js) rotaları nasıl tanımlayacağınızı görebilirsiniz:

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

function App() {
  return (
    
      
        
        
      
    
  );
}

Burada Routes bileşeni, tanımlanan tüm rotaları kapsar ve URL ile eşleşen ilk Route bileşenini ekrana çizer. Bu yapı, tek sayfa uygulaması (SPA) mantığının temelidir.

Navigasyon Bileşeni ile Link Yönetimi

Kullanıcıların sayfalar arasında geçiş yapması için geleneksel etiketleri yerine Link bileşenini kullanmalıyız. etiketi tarayıcıyı tamamen yeniler, ancak Link bileşeni sadece gerekli bileşeni değiştirerek hızlı bir geçiş sağlar.

Navigasyon çubuğunuzu (Navbar) şu şekilde oluşturabilirsiniz:

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

const Navbar = () => {
  return (
    
      
  • Anasayfa
  • Hakkımızda
); };

Bu kod, uygulamanızın her sayfasında görünecek bir navigasyon menüsü oluşturur. to özelliği, yönlendirilecek rotayı belirtir ve React Router'ın uygulama durumunu güncellemesini sağlar.

Dinamik Rotalar ve Parametre Kullanımı

Çoğu uygulamada ürün detayları veya kullanıcı profilleri gibi dinamik içeriklere ihtiyaç duyarız. Bunun için URL'de değişken kısımlar tanımlarız. :id gibi ifadeler, React Router'a buranın dinamik bir değer olduğunu anlatır.

Dinamik bir sayfa oluşturmak için şu yöntemi kullanın:

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

const ProductDetail = () => {
  const { id } = useParams();
  return 


Ürün Detayı: {id}

; }; // Route tanımı:

useParams hook'u (kanca), URL'deki parametreleri yakalamamızı sağlar. Bu, veritabanından veri çekerken ilgili ID'yi kullanmak için kritik bir yöntemdir.

Navigasyon Yöntemlerinin Karşılaştırılması

Yöntem Avantajı Dezavantajı
Link Bileşeni Hızlı, state korumalı Sadece tıklama ile çalışır
useNavigate Hook Programatik geçiş sağlar Kod içinde yönetilmelidir
a Etiketi Basit, dış linkler için ideal Sayfayı komple yeniler

Programatik Navigasyon ve useNavigate Kullanımı

Bazen bir işlem bittikten sonra (örneğin form gönderimi sonrası) kullanıcıyı başka bir sayfaya yönlendirmeniz gerekir. Bu durumda useNavigate hook'u kullanılır.

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

const LoginForm = () => {
  const navigate = useNavigate();

  const handleLogin = () => {
    // Giriş işlemleri burada yapılır
    navigate('/dashboard');
  };

  return Giriş Yap;
};

Bu yöntem, kullanıcı etkileşimi dışında mantıksal bir akışa bağlı geçişler yapmanıza olanak tanır. navigate(-1) kullanarak bir önceki sayfaya dönmek gibi esnek seçenekler de mevcuttur.

Güvenlik Uyarısı: Kullanıcıları yönlendirirken URL parametrelerinin doğruluğunu mutlaka kontrol edin. XSS (Cross-Site Scripting) saldırılarına karşı, URL'den gelen verileri doğrudan DOM'a yazdırmadan önce temizleyin veya doğrulayın.

Sıkça Sorulan Sorular

React Router'da 404 sayfası nasıl yapılır?

Routes içerisine path="*" şeklinde bir rota ekleyerek, eşleşmeyen tüm URL'ler için özel bir NotFound bileşeni gösterebilirsiniz.

Sayfa geçişlerinde animasyon nasıl eklenir?

Framer Motion gibi kütüphaneler, React Router ile entegre çalışarak sayfa giriş-çıkış efektleri oluşturmanıza olanak tanır.

Korumalı rotalar (Protected Routes) nasıl oluşturulur?

Kullanıcının giriş yapıp yapmadığını kontrol eden bir sarmalayıcı (wrapper) bileşen oluşturarak, giriş yapmamış kullanıcıları login sayfasına yönlendirebilirsiniz.

URL'deki sorgu parametrelerini (query params) nasıl okurum?

useSearchParams hook'unu kullanarak ?search=react gibi URL parametrelerine erişebilirsiniz.

Neden a etiketi yerine Link kullanmalıyım?

a etiketi sayfayı tamamen yeniden yüklediği için React'in state'i sıfırlanır. Link ise sadece içeriği güncelleyerek SPA deneyimini korur.

Sorumluluk Reddi: Bu rehberdeki kod örnekleri eğitim amaçlıdır. Üretim ortamında (production) kullanırken, özellikle kimlik doğrulama ve veri güvenliği konularında profesyonel güvenlik standartlarını (JWT, HTTPS, input sanitization) uyguladığınızdan emin olun.

React Router ile Kod Bölümleme (Code Splitting) ve Lazy Loading

Büyük ölçekli React uygulamalarında, tüm bileşenleri tek bir JavaScript dosyasında yüklemek, uygulamanın ilk açılış süresini (LCP - Largest Contentful Paint) ciddi oranda yavaşlatır. React Router, React.lazy ve Suspense yapılarıyla entegre çalışarak, rotalar arasında geçiş yapıldığında ilgili kod bloğunu dinamik olarak yüklemenize olanak tanır.

Bu yöntem, kullanıcının sadece o an ihtiyaç duyduğu kodu indirmesini sağlayarak bant genişliği tasarrufu sağlar.

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

const Dashboard = lazy(() => import('./pages/Dashboard'));
const Settings = lazy(() => import('./pages/Settings'));

function App() {
  return (
    
      
        
          
          
        
      
    
  );
}

Navigasyon Hata Ayıklama ve İzleme Stratejileri

Karmaşık navigasyon yapılarında, kullanıcının hangi rotadan geldiğini veya bir yönlendirme hatasının neden tetiklendiğini anlamak zor olabilir. React Router, geliştirme sürecinde rotaları izlemek için useLocation kancasını (hook) sunar. Bu kanca, mevcut URL yolunu, sorgu parametrelerini ve state bilgilerini anlık olarak takip etmenizi sağlar.

Aşağıdaki örnekte, her rota değişikliğinde konsola mevcut konumu yazdıran bir izleme bileşeni oluşturulmuştur:

import { useEffect } from 'react';
import { useLocation } from 'react-router-dom';

function RouteTracker() {
  const location = useLocation();

  useEffect(() => {
    console.log("Kullanıcı şu rotaya geçti:", location.pathname);
    // Burada Google Analytics veya benzeri bir izleme aracı tetiklenebilir
  }, [location]);

  return null;
}

// App bileşeni içerisinde kullanımı:
// 
//   
//   ...
// 

Navigasyon Hatalarını Yönetme

Kullanıcıların var olmayan bir alt rotaya erişmeye çalışması durumunda veya dinamik verilerin yüklenemediği senaryolarda, ErrorBoundary yapısını React Router ile birleştirmek en iyi pratiktir. Bu sayede, navigasyon kaynaklı bir hata tüm uygulamanın çökmesini engeller ve kullanıcıya daha kontrollü bir hata mesajı gösterilir.

Hata Türü Çözüm Stratejisi
404 Not Found * rotası ile fallback bileşeni tanımlamak.
Yükleme Hatası Suspense fallback ile kullanıcıya yükleme durumu göstermek.
Parametre Eksikliği useParams kontrolü ile erken yönlendirme (redirect) yapmak.

Sonuç

React ile bileşen bazlı sayfa navigasyonu, uygulamanızın kullanıcı dostu ve performanslı olmasını sağlar. Bu rehberde öğrendiğiniz BrowserRouter, Link, useParams ve useNavigate yapıları, profesyonel bir SPA geliştirmenin temel taşlarıdır. Bir sonraki adım olarak, "Lazy Loading" (tembel yükleme) yöntemini kullanarak sayfalarınızı parçalar halinde yüklemeyi ve uygulamanızın ilk açılış hızını optimize etmeyi araştırabilirsiniz.

Bu yazıya tepkinizi paylaşın:
Zeynep Kaya

Hobi projeleri ve kendin yap (DIY) içerikleri üzerine uzmanlaşmış bir içerik editörüyüm. Adım adım rehberlerle okuyucuların teknik becerilerini geliştirmelerine yardımcı oluyorum.

Yorumlar (18)

18
okuyucu bu yazı hakkında yorum yaptı. Siz de deneyiminizi paylaşarak diğer okuyuculara yardımcı olabilirsiniz.
Ceren M.
Ceren M. 23 Temmuz 2026

Baya faydalı oldu, ödevim için çok lazımdı. Teşekürler.

Tolga K.
Tolga K. 24 Temmuz 2026

Aynen, ben de yararlandım bugün.

Oğuzhan B.
Oğuzhan B. 26 Temmuz 2026

React Router yerine artık Next.js'in kendi routing sistemi tercih ediliyor genelde, senin görüşün nedir?

Zeynep Kaya
Zeynep Kaya 27 Temmuz 2026

Next.js gerçekten çok güçlü ama saf React projelerinde hala en iyi çözüm bence. Projenin ihtiyacına göre değişir tabii.

Ayşe Y.
Ayşe Y. 28 Temmuz 2026

React'a yeni başlayanlar için harika bi kaynak olmuş, teşekkürler.

Zeynep Kaya
Zeynep Kaya 29 Temmuz 2026

Beğenmene çok sevindim Ayşe, başarılar dilerim!

Hakan Vural
Hakan Vural 29 Temmuz 2026

Kod bloklarını daha detaylı inceledim de, bazı yerlerde importlar eksik gibi geldi sanki? Tam çalışmıyo kodlar.

Zehra Nur
Zehra Nur 30 Temmuz 2026

Ben denedim çalışıyor, belki paket versiyonun eskidir?

Deniz Kara
Deniz Kara 30 Temmuz 2026

Çok açıklayıcı olmuş, ellerine sağlık Zeynep hanım. Dinamik rotalar kısmını hemen projeme uyguladım.

Kaan Öz
Kaan Öz 31 Temmuz 2026

Sayfa geçişlerinde animasyon eklemek istesek bu yapıda nasıl bi yol izlemeliyiz? Fikir verir misin?

Zeynep Kaya
Zeynep Kaya 31 Temmuz 2026

Framer Motion ile çok şık oluyor. Bir sonraki rehberde belki ona değinirim, takipte kal!

Selin A.
Selin A. 01 Ağustos 2026

Programatik navigasyon kısmı hayat kurtardı. useNavigate hook'unu bir türlü anlayamamıştım, çok sade anlatmışsın.

Mert Demir
Mert Demir 02 Ağustos 2026

Güzel yazı olmuş ama keşke birazda lazy loading konusuna değinseydin. Performans için kritik bence.

Zeynep Kaya
Zeynep Kaya 03 Ağustos 2026

Çok haklısın Mert, lazy loading bambaşka bir yazı konusu olmayı hak ediyor. Yakında onu da hazırlarım.

Elif Şahin
Elif Şahin 03 Ağustos 2026

Ya ben nested routes kısmında sürekli hata alıyom, tam olarak hangi dosya yapısı daha sağlıklı önerirsin?

Burak Çelik
Burak Çelik 04 Ağustos 2026

Outlet bileşenini doğru kullandığından emin ol, genelde orada hata yapılıyor.

Caner Yılmaz
Caner Yılmaz 05 Ağustos 2026

React Router v6 ile gelen değişiklikler çok kafa karıştırıcıydı, bu yazı ilaç gibi geldi resmen. Eline sağlık.

Zeynep Kaya
Zeynep Kaya 06 Ağustos 2026

Çok teşekkürler Caner, v6 ile gerçekten çok şey değişti ama alışınca çok daha temiz bir yapı sunuyor.

Yorum Yaz