Önemli: Diğer yazılarımla direkt bağlantılı bir yazıdır. İlk olarak bu yazıdan okumaya başladıysanız, eğitim serisine kısaca bir göz atmanızı tavsiye ederim.
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.