React Router

Merhaba, bugünkü blog konumda başlıktada gördüğünüz gibi, react router kullanarak, react.js projelerinizde nasıl routing işlemleri yapabileceğinizi basit bir şekilde anlatmayı hedefliyorum. Ufak bir web araması ile aynı konuyu ele almış onlarca blog yazısı bulabilirsiniz elbette, bunları bende okudum fakat hepsinde aynı sorun gözüme çarptı. Teorik bilgiye o kadar önem verilmişki, asıl önemli olan(bence) uygulamalı anlatım ve betimleme neredeyse hiçbir blog yazısında veya react router için hazırlanmış dökümanda karşıma çıkmadı. Bu yüzden bu blog yazısı içerisinde olabildiğince teorik bilgiyi basite indirgeyip, betimleyerek sizlere hızlı bir şekilde; React.js projelerinizde react router kütüphanesini nasıl kullanabilirim?
Sorusuna cevap vereceğiz ve örnek olması için, birlikte basit bir proje üzerinde routing işlemi için örnek bir çalışma yapacağız.

React-router kütüphanesi tam olarak ne işe yarar?

React.js de routing işlemleri için kullanabileceğiniz birçok altarnatif kütüphane bulunmaktadır, bunlar arasında en yaygın olanı ise react router ‘dur. Bunun nedeni ise kullanımının kolay olması ve tüm ihtiyaçları karşılayabiliyor olmasıdır. React-router kütüphanesi react.js prolerimiz içerisinde WEB API tarafıyla iletişimi sağlayarak router görevi görür ve tüm routing hesaplamalarını bizim yerimize yapar.

React.js projesine nasıl react router kurulur?

Öncelikle paket yükleyicisini kullanarak kütüphaneyi projeye dahil edelim.

npm i react-router-dom

Yükleme işlemini tamamladıktan sonra sonraki aşamalar için devam etmeden önce size react router ile gelen birkaç bileşenlerden bahsetmek istiyorum.

  • BrowserRouter
    • Tüm bileşenlerin kullanılacağı bölümün dışına eklenir, routerların çalışacağı alanı belirlemek için kullanılır.
  • Routers
    • Router’lar için kapsayıcıdır. Bunu <ul> <li> yapısındaki <ul> olarak da düşünebilirsiniz.
  • Router
    • Her bir route işlemini router ile tanımlarız.
  • Link
    • html’de ki <a> tag’ının görevini yapar.

Bu kısa bilgilerdende bahsettiğimize göre, artık react router ile kullanacağımız temel bileşenleri biliyorsunuz.

Yeni bir react projesi oluşturdum ve yukarıdaki “npm i react-router-dom” komutunu kullanarak gerekli dosyaları projeme dahil ettim. Şimdi ise sayfalar arasında geçiş yapabilmemi sağlayacak ufak bir navbar hazırlayacağım.

Bunun için öncelikle BrowserRouter ‘ı src klasörüm altındaki index.js dosyası içerisinde <App/> component’ımi kapsayacak şekilde kodlarıma ekliyorum.

import React from 'react';
import ReactDOM from 'react-dom/client';
import './index.css';
import App from './App';
// as Router diyerek bu bileşeni daha sonra kullanmak istediğimde Router ismiyle çağıracağımı belirtiyorum.
import { BrowserRouter as Router } from 'react-router-dom';

const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
<Router>
  <App />
</Router>
);

index.js dosyama BrowseRouter bileşenimi ekledikten sonra ise sırada App.js dosyamda rota sistemini oluşturmaya geliyor.

import './App.css';
import { Routes, Route } from 'react-router-dom';
import Homepage from './components/Homepage';
import Contact from './components/Contact';
function App() {
  return (
    <div className="App">
    <Routes>
      <Route exact path='/' element={<Homepage />} />
      <Route exact path="/contact" element={<Contact/>} />
    </Routes>
    </div>
  );
}

export default App;

Homepage ve Contact adında 2 component oluşturdum ve /contact path’ine gidilmesi durumunda Contact component’inin ana dizine gidilmesi halinde ise Homepage component’inin görüntüntülenmesini istediğimi belirttim.

Son olarak Link bileşeninin kullanımını inceleyelim.

import './App.css';
import { Routes, Route, Link } from 'react-router-dom';
import Homepage from './components/Homepage';
import Contact from './components/Contact';
function App() {
  return (
    <div className="App">
      
    <Link to="/">Anasayfa</Link>
    <Link to="/contact">Contact</Link>

    <Routes>
      <Route exact path='/' element={<Homepage />} />
      <Route exact path="/contact" element={<Contact/>} />
    </Routes>

    

    </div>
  );
}

export default App;

Tıpkı html <a> etiketinin kullanılması gibi Link bileşenide aynı şekilde kullanılmaktadır. <a> etiketinde olduğu gibi Link bileşeninin başladığı ve bittiği bölümler arasına istediğimiz herşeyi ekleyebiliriz.

Diğer Parametreler:

Exact

Tam olarak eşleşmeyi temsil eder. (Genelde en sık kullanılandır.)

<Route exact path="/blog" element={<Blog/>} />
pathlocationexacteşleşme durumu
/blog/blog/reactYokEşleşti
/blog/blog/reactVarEşleşmedi
/blog/blogVarEşleşti

Path

Değişkenin sağlandığı herhangi bir geçerli url’dir. Genelde parametre kullanılan path’ler için kullanılır.

<Route path="/users/:id" element={<Profile/>} />

Strict

%100 eşleşmenin sağlanmasını temsil eder.

<Route strict path="/home/" element={<Home/>} />
pathlocationeşleşme durumu
/home//homeEşleşmedi
/home//home/Eşleşti

Sensitive

Büyük-küçük harfler hadil olmak üzere bir eşleşme sağlamak için kullanılır.

<Route sensitive path="/home" element={<Home />} />
pathlocationeşleşme durumu
/home/HomeEşleşmedi
/home/homeEşleşti

Buraya kadar okuduğunuz için teşekkür ederim. Diğer yazılarıma buradan ulaşabilirsiniz.