⊗jsrtPmRtNR 27 of 47 menu

React Router'da İç İçe Rotalar

Bu derste, iç içe rotalar kavramıyla tanışacağız. Önceki derste yaptığımız uygulamayı başlatın. Bağlantılara tıkladığımızda, ürünün ayrı bir sayfasına gidiyoruz. Diyelim ki bu bize uygun değil ve daha net görmek için ürün listesi ve ürün sayfasının yan yana, aynı ekranda görüntülenmesini istiyoruz. Hadi bunu yapalım.

Bunun için main.jsx dosyasını açalım ve ürün sayfası için olan rotamızı kök rotanın alt rotası yapalım veya başka bir deyişle onu kök rotanın "içine" yerleştirelim. Bunun için rota nesnesinin bir başka özelliği olan children'ı kullanacağız:

const router = createBrowserRouter([ { path: '/', element: <Root />, errorElement: <ErrorPage404 />, children: [ { path: 'products/:productId', element: <Product />, }, ], }, ]);

Yine bağlantılara tıklıyoruz, ancak ürün listesinin sağında hiçbir şey görmüyoruz. Bunun nedeni, kök rotaya alt rotalarını nerede görüntülemek istediğimizi söylememiş olmamız.

Alt rotaların elemanlarını üst rota içinde oluşturmak için bize Outlet bileşeni yardımcı olacak. Hadi onu kütüphaneden kök rota dosyasına aktaralım:

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

Sonra onu bir #product div'i içine alalım ve kök rota için olan düzende, nav kapanış etiketinden sonra, sonuna ekleyelim ve tüm yapıyı bir #main div'i ile saralım:

return ( <div id="main"> <nav> <a href={`/products/1`}>Product1</a> <a href={`/products/2`}>Product2</a> </nav> <div id="product"> <Outlet /> </div> </div> );

Bağlantılara tıkladığımızda, artık hem ürün listesini hem de ürün sayfasını görüyoruz.

index.css dosyamıza biraz stil ekleyelim:

h1, h2 { margin: 0; } div#main { display: flex; margin: 20px; } div#product { margin-left: 40px; }

Önceki dersteki görevde oluşturduğunuz uygulamayı alın. Ders materyallerinden faydalanarak, öğrenci sayfası için olan rotayı kök rotanın içine yerleştirin.

Şimdi de bağlantılara tıklandığında ekranda hem öğrenci listesinin hem de öğrenci sayfasının görüntülenmesini sağlayın.

Türkçe
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenЎзбекOʻzbekTiếng Việt
Web sitesinin çalışması, analiz ve kişiselleştirme için çerezleri kullanıyoruz. Veri işleme, Gizlilik Politikası'na uygun olarak gerçekleşir.
tümünü kabul et özelleştir reddet