{"id":36386,"date":"2025-12-15T11:41:33","date_gmt":"2025-12-15T08:41:33","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=36386"},"modified":"2025-12-15T11:41:33","modified_gmt":"2025-12-15T08:41:33","slug":"react-router-parametreleri-dinamik-yonlendirme-rehberi","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/react-router-parametreleri-dinamik-yonlendirme-rehberi\/","title":{"rendered":"React Router Parametreleri: Dinamik Y\u00f6nlendirme Rehberi"},"content":{"rendered":"<p><body><\/p>\n<h2>React Router Parametreleri: Dinamik Y\u00f6nlendirme Rehberi<\/h2>\n<p>React uygulamalar\u0131nda kullan\u0131c\u0131 deneyimini zenginle\u015ftirmek ve veri odakl\u0131 sayfalar olu\u015fturmak i\u00e7in dinamik y\u00f6nlendirme (routing) hayati \u00f6neme sahiptir. React Router, bu dinamikli\u011fi sa\u011flamak i\u00e7in parametreleri kullan\u0131r. Bu rehberde, React Router parametrelerinin ne oldu\u011funu, nas\u0131l kullan\u0131ld\u0131\u011f\u0131n\u0131 ve uygulamalar\u0131n\u0131zda g\u00fc\u00e7l\u00fc, esnek rotalar olu\u015fturmak i\u00e7in en iyi uygulamalar\u0131 derinlemesine inceleyece\u011fiz.<\/p>\n<h3>Giri\u015f: Dinamik Rotalar\u0131n G\u00fcc\u00fc<\/h3>\n<p>Modern web uygulamalar\u0131 genellikle ayn\u0131 yap\u0131ya sahip ancak farkl\u0131 i\u00e7eriklere sahip sayfalar bar\u0131nd\u0131r\u0131r. \u00d6rne\u011fin, bir e-ticaret sitesinde binlerce \u00fcr\u00fcn olmas\u0131na ra\u011fmen, her \u00fcr\u00fcn\u00fcn detay sayfas\u0131 ayn\u0131 \u015fablona sahiptir. Bu gibi durumlarda, her \u00fcr\u00fcn i\u00e7in ayr\u0131 bir rota tan\u0131mlamak yerine, tek bir dinamik rota \u015fablonu olu\u015fturup \u00fcr\u00fcn kimli\u011fini (ID) URL \u00fczerinden parametre olarak ge\u00e7irmek \u00e7ok daha verimli ve s\u00fcrd\u00fcr\u00fclebilirdir. React Router parametreleri tam da bu ihtiyac\u0131 kar\u015f\u0131lar: URL&#8217;deki de\u011fi\u015fken k\u0131s\u0131mlar\u0131 yakalayarak bile\u015fenlerinize veri aktarman\u0131z\u0131 sa\u011flarlar. Bu sayede, uygulaman\u0131z daha \u00f6l\u00e7eklenebilir, bak\u0131m\u0131 daha kolay ve kullan\u0131c\u0131 dostu hale gelir.<\/p>\n<h3>React Router ve Dinamik Rotalar<\/h3>\n<p>React Router, uygulaman\u0131z\u0131n farkl\u0131 URL&#8217;lere farkl\u0131 bile\u015fenleri render etmesini sa\u011flayan pop\u00fcler bir k\u00fct\u00fcphanedir. Dinamik rotalar olu\u015fturmak i\u00e7in URL \u015fablonlar\u0131nda belirli yer tutucular tan\u0131mlar\u0131z. Bu yer tutuculara &#8220;parametre&#8221; ad\u0131 verilir.<\/p>\n<p>React Router&#8217;da bir parametre tan\u0131mlamak i\u00e7in rota yolunda iki nokta \u00fcst \u00fcste (<code>:<\/code>) i\u015faretini kullan\u0131r\u0131z. \u00d6rne\u011fin, <code>\/products\/:id<\/code> rotas\u0131, <code>\/products\/123<\/code>, <code>\/products\/abc<\/code> gibi URL&#8217;leri e\u015fle\u015ftirecektir. <code>:id<\/code> k\u0131sm\u0131, URL&#8217;deki de\u011fi\u015fen de\u011feri yakalayan parametredir.<\/p>\n<p>Temel bir React Router kurulumu \u015fu \u015fekildedir:<\/p>\n<pre><code class=\"language-jsx\">\/\/ src\/App.js\nimport React from 'react';\nimport { BrowserRouter as Router, Routes, Route, Link } from 'react-router-dom';\nimport HomePage from '.\/components\/HomePage';\nimport ProductDetail from '.\/components\/ProductDetail';\nimport UserProfile from '.\/components\/UserProfile';\nimport NotFound from '.\/components\/NotFound';\n\nfunction App() {\n  return (\n    <Router>\n      <nav>\n        <Link to=\"\/\">Anasayfa<\/Link> | \n        <Link to=\"\/products\/1\">\u00dcr\u00fcn 1<\/Link> | \n        <Link to=\"\/products\/2\">\u00dcr\u00fcn 2<\/Link> |\n        <Link to=\"\/users\/admin\/101\">Admin Kullan\u0131c\u0131 101<\/Link>\n      <\/nav>\n      <Routes>\n        <Route path=\"\/\" element={<HomePage \/>} \/>\n        <Route path=\"\/products\/:id\" element={<ProductDetail \/>} \/>\n        <Route path=\"\/users\/:role\/:id\" element={<UserProfile \/>} \/>\n        <Route path=\"<em>\" element={<NotFound \/>} \/> {\/<\/em> 404 Sayfas\u0131 *\/}\n      <\/Routes>\n    <\/Router>\n  );\n}\n\nexport default App;<\/code><\/pre>\n<p>Yukar\u0131daki \u00f6rnekte:<br \/>\n&#8211; <code>\/products\/:id<\/code>: Tek bir parametre (<code>id<\/code>) tan\u0131mlar.<br \/>\n&#8211; <code>\/users\/:role\/:id<\/code>: \u0130ki parametre (<code>role<\/code> ve <code>id<\/code>) tan\u0131mlar.<br \/>\n&#8211; <code>*<\/code>: Herhangi bir e\u015fle\u015fmeyen rota i\u00e7in bir yakalama (catch-all) rotas\u0131d\u0131r, genellikle 404 sayfalar\u0131 i\u00e7in kullan\u0131l\u0131r.<\/p>\n<h3>Parametre T\u00fcrleri ve Kullan\u0131m\u0131<\/h3>\n<p>React Router, farkl\u0131 senaryolar i\u00e7in \u00e7e\u015fitli parametre tan\u0131mlama y\u00f6ntemleri sunar.<\/p>\n<h4>Tekli Parametreler<\/h4>\n<p>En yayg\u0131n kullan\u0131m \u015feklidir. Tek bir dinamik de\u011feri URL&#8217;den almak i\u00e7in kullan\u0131l\u0131r.<\/p>\n<p><strong>Tan\u0131m:<\/strong> <code>\/items\/:itemId<\/code><br \/>\n<strong>\u00d6rnek URL:<\/strong> <code>\/items\/123<\/code>, <code>\/items\/laptop<\/code><\/p>\n<pre><code class=\"language-jsx\">\/\/ src\/components\/ProductDetail.js\nimport React from 'react';\nimport { useParams } from 'react-router-dom';\n\nfunction ProductDetail() {\n  const { id } = useParams(); \/\/ URL'den 'id' parametresini al\u0131r\n\n  \/\/ Bu ID'yi kullanarak API'den \u00fcr\u00fcn detaylar\u0131n\u0131 \u00e7ekebilirsiniz\n  \/\/ useEffect(() => { \/<em> fetch product data <\/em>\/ }, [id]);\n\n  return (\n    <div>\n      <h3>\u00dcr\u00fcn Detay Sayfas\u0131<\/h3>\n      <p>\u00dcr\u00fcn ID: <strong>{id}<\/strong><\/p>\n      {\/<em> Burada \u00fcr\u00fcn detaylar\u0131n\u0131 render edebilirsiniz <\/em>\/}\n    <\/div>\n  );\n}\n\nexport default ProductDetail;<\/code><\/pre>\n<p><code>useParams<\/code> hook&#8217;u, mevcut rotan\u0131n parametrelerini i\u00e7eren bir nesne d\u00f6nd\u00fcr\u00fcr. Bu nesneden istedi\u011finiz parametreyi destructing (yap\u0131 bozma) y\u00f6ntemiyle alabilirsiniz.<\/p>\n<h4>\u00c7oklu Parametreler<\/h4>\n<p>Bazen bir rota birden fazla dinamik bilgiye ihtiya\u00e7 duyabilir. \u00d6rne\u011fin, bir kullan\u0131c\u0131n\u0131n rol\u00fc ve ID&#8217;si gibi.<\/p>\n<p><strong>Tan\u0131m:<\/strong> <code>\/users\/:role\/:userId<\/code><br \/>\n<strong>\u00d6rnek URL:<\/strong> <code>\/users\/admin\/101<\/code>, <code>\/users\/editor\/205<\/code><\/p>\n<pre><code class=\"language-jsx\">\/\/ src\/components\/UserProfile.js\nimport React from 'react';\nimport { useParams } from 'react-router-dom';\n\nfunction UserProfile() {\n  const { role, id } = useParams(); \/\/ 'role' ve 'id' parametrelerini al\u0131r\n\n  return (\n    <div>\n      <h3>Kullan\u0131c\u0131 Profili Sayfas\u0131<\/h3>\n      <p>Kullan\u0131c\u0131 Rol\u00fc: <strong>{role}<\/strong><\/p>\n      <p>Kullan\u0131c\u0131 ID: <strong>{id}<\/strong><\/p>\n      {\/<em> Rol ve ID'ye g\u00f6re farkl\u0131 i\u00e7erik g\u00f6sterebilirsiniz <\/em>\/}\n    <\/div>\n  );\n}\n\nexport default UserProfile;<\/code><\/pre>\n<p><code>useParams<\/code> hook&#8217;u, tan\u0131mlad\u0131\u011f\u0131n\u0131z t\u00fcm parametreleri i\u00e7eren bir nesne d\u00f6nd\u00fcrecektir.<\/p>\n<h4>Opsiyonel Parametreler<\/h4>\n<p>Bir parametrenin URL&#8217;de bulunup bulunmamas\u0131n\u0131n iste\u011fe ba\u011fl\u0131 oldu\u011fu durumlar i\u00e7in kullan\u0131l\u0131r. Parametre ad\u0131n\u0131n sonuna <code>?<\/code> eklenerek belirtilir.<\/p>\n<p><strong>Tan\u0131m:<\/strong> <code>\/search\/:query?<\/code><br \/>\n<strong>\u00d6rnek URL:<\/strong> <code>\/search\/react<\/code>, <code>\/search<\/code><\/p>\n<pre><code class=\"language-jsx\">\/\/ src\/components\/SearchPage.js\nimport React from 'react';\nimport { useParams } from 'react-router-dom';\n\nfunction SearchPage() {\n  const { query } = useParams(); \/\/ 'query' parametresini al\u0131r, opsiyoneldir\n\n  return (\n    <div>\n      <h3>Arama Sonu\u00e7lar\u0131<\/h3>\n      {query ? (\n        <p>Aranan kelime: <strong>{query}<\/strong><\/p>\n      ) : (\n        <p>Herhangi bir arama kelimesi girilmedi. Pop\u00fcler aramalar\u0131 g\u00f6steriliyor.<\/p>\n      )}\n      {\/<em> Arama sonu\u00e7lar\u0131n\u0131 burada g\u00f6ster <\/em>\/}\n    <\/div>\n  );\n}\n\nexport default SearchPage;<\/code><\/pre>\n<p><code>query<\/code> parametresi mevcut de\u011filse, <code>useParams<\/code> taraf\u0131ndan d\u00f6nd\u00fcr\u00fclen nesnede <code>query<\/code> de\u011feri <code>undefined<\/code> olacakt\u0131r. Bu durumu kontrol ederek farkl\u0131 i\u00e7erikler g\u00f6sterebilirsiniz.<\/p>\n<h3>Parametreleri Kod \u0130\u00e7inde Kullanma<\/h3>\n<p>Parametreler, React bile\u015fenlerinizde \u00e7e\u015fitli \u015fekillerde kullan\u0131labilir.<\/p>\n<h4><code>useParams<\/code> Hook&#8217;u ile Parametrelere Eri\u015fim<\/h4>\n<p><code>useParams<\/code> hook&#8217;u, fonksiyonel bile\u015fenler i\u00e7inde mevcut rotan\u0131n URL parametrelerine eri\u015fmenin ana yoludur. Bile\u015fen render edildi\u011finde, React Router mevcut URL&#8217;yi e\u015fle\u015ftirir ve yakalad\u0131\u011f\u0131 t\u00fcm parametreleri bir nesne olarak <code>useParams<\/code> arac\u0131l\u0131\u011f\u0131yla sa\u011flar.<\/p>\n<pre><code class=\"language-jsx\">\/\/ src\/components\/ItemDetail.js\nimport React, { useEffect, useState } from 'react';\nimport { useParams } from 'react-router-dom';\n\nfunction ItemDetail() {\n  const { itemId } = useParams();\n  const [item, setItem] = useState(null);\n  const [loading, setLoading] = useState(true);\n  const [error, setError] = useState(null);\n\n  useEffect(() => {\n    if (itemId) {\n      setLoading(true);\n      setError(null);\n      \/\/ itemId'ye g\u00f6re API'den veri \u00e7ekme sim\u00fclasyonu\n      setTimeout(() => {\n        if (itemId === '1') {\n          setItem({ id: '1', name: 'Kitap', description: 'Harika bir roman.' });\n        } else if (itemId === '2') {\n          setItem({ id: '2', name: 'Defter', description: 'Not almak i\u00e7in ideal.' });\n        } else {\n          setError('\u00dcr\u00fcn bulunamad\u0131.');\n          setItem(null);\n        }\n        setLoading(false);\n      }, 500);\n    }\n  }, [itemId]); \/\/ itemId de\u011fi\u015fti\u011finde tekrar \u00e7al\u0131\u015ft\u0131r\n\n  if (loading) return <p>Y\u00fckleniyor...<\/p>;\n  if (error) return <p>Hata: {error}<\/p>;\n  if (!item) return <p>\u00dcr\u00fcn se\u00e7ilmedi veya bulunamad\u0131.<\/p>;\n\n  return (\n    <div>\n      <h2>{item.name}<\/h2>\n      <p>ID: {item.id}<\/p>\n      <p>{item.description}<\/p>\n    <\/div>\n  );\n}\n\nexport default ItemDetail;<\/code><\/pre>\n<p>Bu \u00f6rnekte, <code>useEffect<\/code> hook&#8217;u <code>itemId<\/code> parametresi de\u011fi\u015fti\u011finde API&#8217;den ilgili \u00fcr\u00fcn verisini \u00e7ekmek i\u00e7in kullan\u0131l\u0131yor. Bu, dinamik rotalar\u0131n en yayg\u0131n kullan\u0131m senaryolar\u0131ndan biridir.<\/p>\n<h4><code>useNavigate<\/code> ve Parametrelerle Programatik Navigasyon<\/h4>\n<p>Kullan\u0131c\u0131 bir butona t\u0131klad\u0131\u011f\u0131nda veya bir form g\u00f6nderdi\u011finde oldu\u011fu gibi, programatik olarak bir rotaya gitmeniz gerekebilir. <code>useNavigate<\/code> hook&#8217;u bu ama\u00e7la kullan\u0131l\u0131r.<\/p>\n<pre><code class=\"language-jsx\">\/\/ src\/components\/AdminPanel.js\nimport React from 'react';\nimport { useNavigate } from 'react-router-dom';\n\nfunction AdminPanel() {\n  const navigate = useNavigate();\n\n  const handleEditUser = (userId) => {\n    \/\/ Dinamik bir parametre ile kullan\u0131c\u0131 d\u00fczenleme sayfas\u0131na y\u00f6nlendirme\n    navigate(<code>\/users\/edit\/${userId}<\/code>); \n  };\n\n  return (\n    <div>\n      <h3>Y\u00f6netici Paneli<\/h3>\n      <button onClick={() => handleEditUser(5)}>Kullan\u0131c\u0131 5'i D\u00fczenle<\/button>\n      <button onClick={() => handleEditUser(12)}>Kullan\u0131c\u0131 12'yi D\u00fczenle<\/button>\n    <\/div>\n  );\n}\n\nexport default AdminPanel;<\/code><\/pre>\n<p>Burada, <code>handleEditUser<\/code> fonksiyonu, ald\u0131\u011f\u0131 <code>userId<\/code> de\u011ferini kullanarak dinamik bir URL olu\u015fturur ve kullan\u0131c\u0131y\u0131 o URL&#8217;e y\u00f6nlendirir.<\/p>\n<h4><code>Link<\/code> Bile\u015feni ve Parametreler<\/h4>\n<p>Kullan\u0131c\u0131lar\u0131n bir sayfadan di\u011ferine gezmesini sa\u011flamak i\u00e7in <code>Link<\/code> bile\u015feni kullan\u0131l\u0131r. Dinamik rotalar i\u00e7in <code>to<\/code> prop&#8217;una JavaScript template literal&#8217;lar\u0131 (<code> <\/code><code> <\/code>) kullanarak dinamik parametreler ekleyebilirsiniz.<\/p>\n<pre><code class=\"language-jsx\">\/\/ src\/components\/ProductList.js\nimport React from 'react';\nimport { Link } from 'react-router-dom';\n\nconst products = [\n  { id: '1', name: 'Klavye' },\n  { id: '2', name: 'Fare' },\n  { id: '3', name: 'Monit\u00f6r' },\n];\n\nfunction ProductList() {\n  return (\n    <div>\n      <h3>\u00dcr\u00fcn Listesi<\/h3>\n      <ul>\n        {products.map(product => (\n          <li key={product.id}>\n            <Link to={<code>\/products\/${product.id}<\/code>}>{product.name}<\/Link>\n          <\/li>\n        ))}\n      <\/ul>\n    <\/div>\n  );\n}\n\nexport default ProductList;<\/code><\/pre>\n<p>Bu \u00f6rnek, her bir \u00fcr\u00fcn i\u00e7in dinamik olarak <code>\/products\/1<\/code>, <code>\/products\/2<\/code> gibi URL&#8217;ler olu\u015fturan <code>Link<\/code> bile\u015fenlerini g\u00f6stermektedir.<\/p>\n<h3>En \u0130yi Uygulamalar ve Dikkat Edilmesi Gerekenler<\/h3>\n<p>Dinamik rotalar\u0131 kullan\u0131rken uygulaman\u0131z\u0131n performans\u0131n\u0131, g\u00fcvenli\u011fini ve kullan\u0131c\u0131 deneyimini art\u0131rmak i\u00e7in baz\u0131 \u00f6nemli noktalar vard\u0131r.<\/p>\n<h4>Parametre Do\u011frulama (Parameter Validation)<\/h4>\n<p>URL parametreleri kullan\u0131c\u0131 taraf\u0131ndan de\u011fi\u015ftirilebilir. Bu nedenle, bile\u015feninizde bu parametreleri kullanmadan \u00f6nce do\u011frulaman\u0131z \u00f6nemlidir.<br \/>\n&#8211; <strong>Tip Kontrol\u00fc:<\/strong> <code>id<\/code> parametresinin bir say\u0131 olmas\u0131 bekleniyorsa, <code>Number(id)<\/code> ile kontrol edin ve <code>isNaN()<\/code> ile ge\u00e7erlili\u011fini do\u011frulay\u0131n.<br \/>\n&#8211; <strong>G\u00fcvenlik:<\/strong> Parametreleri do\u011frudan veritaban\u0131 sorgular\u0131nda kullan\u0131yorsan\u0131z (sunucu taraf\u0131nda), SQL injection gibi g\u00fcvenlik a\u00e7\u0131klar\u0131na kar\u015f\u0131 dikkatli olun ve mutlaka sanitize edin.<br \/>\n&#8211; <strong>Hata Y\u00f6netimi:<\/strong> Ge\u00e7ersiz bir parametre durumunda kullan\u0131c\u0131ya anlaml\u0131 bir hata mesaj\u0131 g\u00f6sterin veya 404 sayfas\u0131na y\u00f6nlendirin.<\/p>\n<pre><code class=\"language-jsx\">\/\/ ProductDetail.js i\u00e7inde do\u011frulama \u00f6rne\u011fi\nconst { id } = useParams();\nconst productId = parseInt(id);\n\nif (isNaN(productId)) {\n  return <p>Ge\u00e7ersiz \u00dcr\u00fcn ID'si.<\/p>;\n}\n\/\/ productId ile i\u015flemlere devam et<\/code><\/pre>\n<h4>Veri Getirme (Data Fetching)<\/h4>\n<p><code>useEffect<\/code> hook&#8217;u, parametreler de\u011fi\u015fti\u011finde yeni veri getirmek i\u00e7in idealdir.<br \/>\n&#8211; <strong>Ba\u011f\u0131ml\u0131l\u0131k Dizisi:<\/strong> <code>useEffect<\/code> hook&#8217;unun ba\u011f\u0131ml\u0131l\u0131k dizisine parametreyi eklemeyi unutmay\u0131n (<code>[id]<\/code>). Bu, parametre de\u011fi\u015fti\u011finde verinin yeniden \u00e7ekilmesini sa\u011flar.<br \/>\n&#8211; <strong>Y\u00fcklenme ve Hata Durumlar\u0131:<\/strong> Veri \u00e7ekme s\u0131ras\u0131nda kullan\u0131c\u0131ya y\u00fcklenme (loading) durumu g\u00f6sterin ve olas\u0131 hatalar\u0131 (error) y\u00f6netin.<\/p>\n<h4>SEO Dostu URL&#8217;ler (SEO-Friendly URLs)<\/h4>\n<p>Anlaml\u0131 URL parametreleri, arama motorlar\u0131n\u0131n i\u00e7eri\u011finizi daha iyi anlamas\u0131na yard\u0131mc\u0131 olur. \u00d6rne\u011fin, <code>\/products\/123<\/code> yerine <code>\/products\/iphone-13-pro-max<\/code> gibi slug&#8217;lar kullanmak daha iyidir. React Router bunu destekler, <code>:slug<\/code> olarak bir parametre tan\u0131mlayabilirsiniz.<\/p>\n<h4>URL Yap\u0131s\u0131 Tasar\u0131m\u0131 (URL Structure Design)<\/h4>\n<p>URL&#8217;lerinizin tutarl\u0131 ve mant\u0131kl\u0131 bir hiyerar\u015fiye sahip oldu\u011fundan emin olun. Bu hem geli\u015ftiriciler hem de kullan\u0131c\u0131lar i\u00e7in gezinmeyi kolayla\u015ft\u0131r\u0131r. \u00d6rne\u011fin:<br \/>\n&#8211; <code>\/categories\/:categoryName\/products\/:productId<\/code><br \/>\n&#8211; <code>\/users\/:userId\/settings<\/code><\/p>\n<h3>Sonu\u00e7<\/h3>\n<p>React Router parametreleri, dinamik ve etkile\u015fimli React uygulamalar\u0131 olu\u015fturman\u0131n temel ta\u015flar\u0131ndan biridir. <code>useParams<\/code> hook&#8217;u ile URL&#8217;deki de\u011fi\u015fken bilgilere kolayca eri\u015febilir, <code>Link<\/code> ve <code>useNavigate<\/code> ile dinamik rotalara y\u00f6nlendirme yapabilirsiniz. Bu rehberde \u00f6\u011frendi\u011finiz bilgileri ve en iyi uygulamalar\u0131 kullanarak, uygulaman\u0131zda g\u00fc\u00e7l\u00fc, esnek ve kullan\u0131c\u0131 dostu bir y\u00f6nlendirme yap\u0131s\u0131 kurabilirsiniz.<\/p>\n<h4>S\u0131k\u00e7a Sorulan Sorular (SSS)<\/h4>\n<p><strong>S1: <code>useParams<\/code> sadece fonksiyon bile\u015fenlerinde mi kullan\u0131l\u0131r?<\/strong><br \/>\n<strong>C1:<\/strong> Evet, <code>useParams<\/code> bir React Hook&#8217;udur ve sadece fonksiyon bile\u015fenleri veya \u00f6zel Hook&#8217;lar i\u00e7inde kullan\u0131labilir. S\u0131n\u0131f bile\u015fenlerinde parametrelere eri\u015fmek i\u00e7in <code>withRouter<\/code> Higher-Order Component&#8217;ini kullanman\u0131z gerekirdi, ancak React Router v6 ile fonksiyonel bile\u015fenler ve Hook&#8217;lar tercih edilen y\u00f6ntemdir.<\/p>\n<p><strong>S2: Parametreler ve Query String&#8217;ler aras\u0131ndaki fark nedir?<\/strong><br \/>\n<strong>C2:<\/strong><br \/>\n&#8211; <strong>Parametreler:<\/strong> URL&#8217;nin yol k\u0131sm\u0131n\u0131n bir par\u00e7as\u0131d\u0131r (\u00f6rn. <code>\/products\/:id<\/code>). Genellikle belirli bir kayna\u011f\u0131n kimli\u011fini veya hiyerar\u015fik bilgiyi belirtmek i\u00e7in kullan\u0131l\u0131r. Kayna\u011f\u0131n bir par\u00e7as\u0131 olarak kabul edilir.<br \/>\n&#8211; <strong>Query String&#8217;ler:<\/strong> URL&#8217;nin sonunda <code>?key=value&anotherKey=anotherValue<\/code> \u015feklinde yer al\u0131r. Genellikle filtreleme, s\u0131ralama, sayfalama veya iste\u011fe ba\u011fl\u0131 verileri iletmek i\u00e7in kullan\u0131l\u0131r. Kayna\u011f\u0131n kendisini de\u011fil, kayna\u011f\u0131n nas\u0131l sunulaca\u011f\u0131n\u0131 etkileyen bilgilerdir. <code>useSearchParams<\/code> hook&#8217;u ile eri\u015filir.<\/p>\n<p><strong>S3: Bir parametreye eri\u015fmeye \u00e7al\u0131\u015ft\u0131\u011f\u0131mda <code>undefined<\/code> al\u0131rsam ne yapmal\u0131y\u0131m?<\/strong><br \/>\n<strong>C3:<\/strong><br \/>\n1.  <strong>Rota Tan\u0131m\u0131n\u0131 Kontrol Edin:<\/strong> <code>Route<\/code> bile\u015fenindeki <code>path<\/code> prop&#8217;unun parametreyi do\u011fru \u015fekilde tan\u0131mlad\u0131\u011f\u0131ndan emin olun (\u00f6rn. <code>\/products\/:id<\/code>).<br \/>\n2.  <strong>URL&#8217;yi Kontrol Edin:<\/strong> Taray\u0131c\u0131 URL&#8217;sinin rota tan\u0131m\u0131n\u0131zla e\u015fle\u015fti\u011finden ve parametre de\u011ferini i\u00e7erdi\u011finden emin olun (\u00f6rn. <code>\/products\/123<\/code>).<br \/>\n3.  <strong>Parametre Ad\u0131n\u0131 Kontrol Edin:<\/strong> <code>useParams()<\/code> ile ald\u0131\u011f\u0131n\u0131z nesneden do\u011fru parametre ad\u0131n\u0131 (b\u00fcy\u00fck\/k\u00fc\u00e7\u00fck harf duyarl\u0131) istedi\u011finizden emin olun (\u00f6rn. <code>const { id } = useParams();<\/code> e\u011fer rota <code>:id<\/code> ise).<br \/>\n4.  <strong>Opsiyonel Parametreler:<\/strong> E\u011fer parametre opsiyonel (<code>:id?<\/code>) ise, URL&#8217;de bulunmamas\u0131 durumunda <code>undefined<\/code> olmas\u0131 normaldir. Bu durumu kodunuzda y\u00f6netmelisiniz.<\/p>\n<p><strong>S4: Parametre isimleri b\u00fcy\u00fck\/k\u00fc\u00e7\u00fck harf duyarl\u0131 m\u0131?<\/strong><br \/>\n<strong>C4:<\/strong> Evet, React Router&#8217;da parametre isimleri b\u00fcy\u00fck\/k\u00fc\u00e7\u00fck harf duyarl\u0131d\u0131r. E\u011fer rotay\u0131 <code>\/products\/:productId<\/code> olarak tan\u0131mlad\u0131ysan\u0131z, <code>useParams()<\/code> ile <code>const { productId } = useParams();<\/code> \u015feklinde eri\u015fmelisiniz, <code>const { productid } = useParams();<\/code> \u015feklinde de\u011fil.<\/p>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"React Router Parametreleri: Dinamik Y\u00f6nlendirme Rehberi\nReact uygulamalar\u0131nda kullan\u0131c\u0131 deneyimini zenginle\u015ftirmek ve veri odakl\u0131 sayfalar ol","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[128],"tags":[],"class_list":{"0":"post-36386","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-react","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>React Router Parametreleri: Dinamik Y\u00f6nlendirme Rehberi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/react-router-parametreleri-dinamik-yonlendirme-rehberi\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"React Router Parametreleri: Dinamik Y\u00f6nlendirme Rehberi\" \/>\n<meta property=\"og:description\" content=\"React Router Parametreleri: Dinamik Y\u00f6nlendirme Rehberi React uygulamalar\u0131nda kullan\u0131c\u0131 deneyimini zenginle\u015ftirmek ve veri odakl\u0131 sayfalar ol\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/react-router-parametreleri-dinamik-yonlendirme-rehberi\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-12-15T08:41:33+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/react-router-parametreleri-dinamik-yonlendirme-rehberi\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/react-router-parametreleri-dinamik-yonlendirme-rehberi\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"React Router Parametreleri: Dinamik Y\u00f6nlendirme Rehberi\",\"datePublished\":\"2025-12-15T08:41:33+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/react-router-parametreleri-dinamik-yonlendirme-rehberi\/\"},\"wordCount\":1331,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"React\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/react-router-parametreleri-dinamik-yonlendirme-rehberi\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/react-router-parametreleri-dinamik-yonlendirme-rehberi\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/react-router-parametreleri-dinamik-yonlendirme-rehberi\/\",\"name\":\"React Router Parametreleri: Dinamik Y\u00f6nlendirme Rehberi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-12-15T08:41:33+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/react-router-parametreleri-dinamik-yonlendirme-rehberi\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/react-router-parametreleri-dinamik-yonlendirme-rehberi\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/react-router-parametreleri-dinamik-yonlendirme-rehberi\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"React Router Parametreleri: Dinamik Y\u00f6nlendirme Rehberi\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"React Router Parametreleri: Dinamik Y\u00f6nlendirme Rehberi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/react-router-parametreleri-dinamik-yonlendirme-rehberi\/","og_locale":"tr_TR","og_type":"article","og_title":"React Router Parametreleri: Dinamik Y\u00f6nlendirme Rehberi","og_description":"React Router Parametreleri: Dinamik Y\u00f6nlendirme Rehberi React uygulamalar\u0131nda kullan\u0131c\u0131 deneyimini zenginle\u015ftirmek ve veri odakl\u0131 sayfalar ol","og_url":"https:\/\/fatihsoysal.com\/blog\/react-router-parametreleri-dinamik-yonlendirme-rehberi\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-12-15T08:41:33+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"10 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/react-router-parametreleri-dinamik-yonlendirme-rehberi\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/react-router-parametreleri-dinamik-yonlendirme-rehberi\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"React Router Parametreleri: Dinamik Y\u00f6nlendirme Rehberi","datePublished":"2025-12-15T08:41:33+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/react-router-parametreleri-dinamik-yonlendirme-rehberi\/"},"wordCount":1331,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["React"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/react-router-parametreleri-dinamik-yonlendirme-rehberi\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/react-router-parametreleri-dinamik-yonlendirme-rehberi\/","url":"https:\/\/fatihsoysal.com\/blog\/react-router-parametreleri-dinamik-yonlendirme-rehberi\/","name":"React Router Parametreleri: Dinamik Y\u00f6nlendirme Rehberi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-12-15T08:41:33+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/react-router-parametreleri-dinamik-yonlendirme-rehberi\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/react-router-parametreleri-dinamik-yonlendirme-rehberi\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/react-router-parametreleri-dinamik-yonlendirme-rehberi\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"React Router Parametreleri: Dinamik Y\u00f6nlendirme Rehberi"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/36386","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=36386"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/36386\/revisions"}],"predecessor-version":[{"id":36387,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/36386\/revisions\/36387"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=36386"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=36386"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=36386"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}