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.