FrontEnd Developer Road Map

React Tutorial 2023 78 – Router 10 – useNavigate & useParams Hook Kullanımı

Merhabalar.

Bu yazımda useNavigate Hook’unun kullanımına bakacağız.

useNavigate, react-router-dom kütüphanesindeki React hook’larından biridir ve programatik olarak sayfa yönlendirmeleri yapmak için kullanılır. Bu hook, bir işlevi döndürür ve bu işlev, belirli bir URL’ye yönlendirme yapmanızı sağlar.

Önceki sürümlerde kullanılan useHistory hook’u ile benzer bir işlevselliğe sahiptir, ancak useNavigate v6 sürümü ile birlikte gelmiş ve daha basit bir API sunarak sayfa yönlendirmelerini yönetmeyi amaçlamıştır.

useNavigate‘in temel kullanımı:

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

function MyComponent() {
  const navigate = useNavigate();

  const redirectToAboutPage = () => {
    navigate('/about');
  };

  return (
    <div>
      <p>Component içeriği</p>
      <button onClick={redirectToAboutPage}>Hakkında Sayfasına Git</button>
    </div>
  );
}

Yukarıdaki örnekte, useNavigate hook’u kullanılarak navigate adında bir işlev elde edilir. Bu işlev, belirli bir URL’ye yönlendirmek için kullanılır. redirectToAboutPage işlevi, butona tıklandığında '/about' sayfasına yönlendirme yapar.

useNavigate kullanmak, özellikle fonksiyonel bileşenlerde programatik yönlendirmeler yapmak istediğinizde oldukça kullanışlıdır. Bu sayede, kullanıcı etkileşimlerine veya belirli olaylara bağlı olarak sayfa değişiklikleri gerçekleştirebilirsiniz.

useNavigate jsx elementlerinin her biri için tıklanma ve sayfa yönlendirme özelliği kazandırır.

Kendi projemizde HomePage’e, ProductPage’e ve ContactPage’e yönlendirecek iki buton ekleyeceğim.

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

const HomePage = () => {

  const navigate = useNavigate();

  const productLink = () => {

    navigate('/product');

  }

  const contactLink = () => {

    navigate('/contact');

  }

  return (
    <>
      <div className='page'>
        
        <p>HomePage</p> <br/> <br/>

        <div className="btn">

        <button onClick={productLink}>Go to Product Page</button>
        <button onClick={contactLink}>Go to About Page </button>

        </div>
      
      </div>

      
    </>

  )
}

export default HomePage

App.css Güncelle

.App {
  text-align: center;
}

.App-logo {
  height: 40vmin;
  pointer-events: none;
}

@media (prefers-reduced-motion: no-preference) {
  .App-logo {
    animation: App-logo-spin infinite 20s linear;
  }
}

.App-header {
  background-color: #282c34;
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  font-size: calc(10px + 2vmin);
  color: white;
}

.App-link {
  color: #61dafb;
}

@keyframes App-logo-spin {
  from {
    transform: rotate(0deg);
  }
  to {
    transform: rotate(360deg);
  }
}

.page {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  row-gap: 0px;
  height: 95vh;
  font-size: 100px;
  background-color: #282c34;
  color: #61dafb;
  
}

.btn{

  display: flex;
  justify-content: center;
  align-items: center;
  flex-direction: row;
  gap: 10px;  
}


button{

  background-color: #4c6369;
  color: #61dafb;
  border: none;
  border-radius: 5px;
  padding: 10px;
  font-size: 20px;
  cursor: pointer;
}

Şimdi adım adım kodlara bakalım.

useNavigate Import

react-router-dom kütüphanesinden useNavigate’i import ediyoruz.

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

useNavigate Nesnesi Oluştur

const navigate = useNavigate();

Butonun onClick Eventi’ne Navigate Edecek Fonksiyona Bağla

<button onClick={productLink}>Go to Product Page</button>
<button onClick={contactLink}>Go to About Page </button>

Navigate Edecek Fonksiyonların Yazılması

const productLink = () => {

    navigate('/product');

  }

navigate fonksiyonu, parametre olarak verilen /product URL’sine yönlendirme yapar. Yani, productLink fonksiyonu çağrıldığında, sayfa /product URL’sine yönlendirilecektir.

Bu tür bir programatik yönlendirme, kullanıcı bir butona tıkladığında veya belirli bir olay gerçekleştiğinde sayfa değişiklikleri yapmak istediğinizde oldukça kullanışlıdır. Bu şekilde, React uygulamanızdaki gezinme işlemlerini kullanıcı etkileşimleri veya uygulama mantığına bağlı olarak yönetebilirsiniz.

useParams Hook’u Kullanımı

useNavigate hook’u sayesinde url adresleri üzerinde parametreler gönderebiliriz.

Farklı bir kodlama üzerinden buna bakabiliriz.

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

function ProductDetail() {
  const navigate = useNavigate();
  const { productId } = useParams();

  const navigateToProduct = (productId) => {
    navigate(`/product/${productId}`);
  };

  return (
    <div>
      <h2>Ürün Detay Sayfası</h2>
      <p>Ürün ID: {productId}</p>
      <button onClick={() => navigateToProduct(123)}>Belirli bir Ürüne Git</button>
    </div>
  );
}

export default ProductDetail;

Bu örnekte, ProductDetail bileşeni, useParams hook’u ile URL’den dinamik olarak alınan productId parametresini kullanır. Ardından, navigateToProduct fonksiyonu, parametre olarak alınan bir productId değeriyle birlikte useNavigate hook’u kullanılarak belirli bir ürün sayfasına yönlendirme yapar.

Bu şekilde, useParams ve useNavigate hook’larını birlikte kullanarak dinamik URL parametreleri ile sayfa yönlendirmeleri gerçekleştirebilir ve uygulamanızdaki gezinme işlemlerini dinamik hale getirebilirsiniz.

Bir sonraki yazımda görüşmek üzere.

Murat Bilginer

21 Şubat 1992'de doğdum. Endüstri Mühendisi olarak lisansımı 2016 yılında tamamladım. Industryolog Akademi - NGenius oluşumlarının kurucusuyum. Şu anda kendi şirketim Brainy Tech ile Web ve Mobil Geliştirme, AWS, Google Cloud Platform Sistemleri için DevOps, Big Data Analiz ve Görselleştirme hizmetleri sunmakta ve Online Eğitimler vermekteyiz.

Share
Published by
Murat Bilginer

Recent Posts

Kedimiz Oly & FIP Süreci 9 – 1 Haftalık GS İğnesi Serüveni – Oly İyileşiyor mu?

Selamlar, bu yazımda Oly'nin 1 hafta boyunca olduğu GS iğnesi, yaşanan değişimleri anlatmaya çalışacağım. PCR…

2 gün ago

Kedimiz Oly & FIP Süreci 8 – Yeniden Hayvan Hastanesi – Sonuç Kontrolü ve Sonrası…

Selamlar, bu yazımda Hemogram ve Biyokimya sonuçlarımızı göstermek için İÜCHH'ne tekrar gidişimizi ve sonrasını anlatacağım.…

2 gün ago

Kedimiz Oly & FIP Süreci 7 – GS İğnesine Başlama Kararımız ve Oly’de Dikkat Ettiklerimiz

Selamlar, bu yazımda GS iğnesine başlama kararımızı ve Oly’de bu süreçte nelere dikkat ediyor, neler…

2 gün ago

Kedimiz Oly & FIP Süreci 6 – İstanbul Üniversitesi Cerrahpaşa Hayvan Hastanesi Serüveni ve Sonrası

Selamlar, bu yazımda İÜCHH'deki tedavi sürecimiz ve sonrasında yaşananlardan bahsetmeye çalışacağım. 20.06.2025 Cuma günü saat…

3 gün ago

Kedimiz Oly & FIP Süreci 5 – Teşhisten Önce Biz… Veterinerimize Güvenebilir Miydik?

Eve Dönüş ve İlk Şüpheler 18 Haziran Perşembe saat 23 sularında İstanbul’daki evimize giriş yaptık.…

3 gün ago

Kedimiz Oly & FIP Süreci 4 – Antalya’ya Yolculuk – Bir Şeyler Ters Gidiyor… & İstanbul’a Geri Dönüş

9 Haziran Pazartesi günü Aydın’daki sürecimiz bitti ve Antalya yolculuğumuz başladı. Saat 11 gibi yola…

4 gün ago