React'te Performans Sorunlarını Çözmek: useMemo ve useCallback Kullanımıyla Optimize Edilen Uygulamalar

**

BFS



React uygulamalarınızda performans sorunlarıyla mı karşılaşıyorsunuz? Büyük uygulamalar geliştikçe, render işlemlerinin sayısı arttıkça ve kullanıcı etkileşimleri sıklaştıkça, uygulamanızın performansı önemli bir mesele haline gelir. Neyse ki, React, performansı optimize etmek için birkaç güçlü araç sunuyor. Bu araçlardan ikisi, `useMemo` ve `useCallback`. Ancak, bu araçları ne zaman kullanmalısınız? Hangi durumlarda gerçekten faydalıdırlar? Bu yazımızda, bu soruları yanıtlayacağız ve React'teki performans optimizasyonunu derinlemesine inceleyeceğiz.

React'te Performans Sorunları

Büyük ve karmaşık uygulamalarda, her bileşen güncellendiğinde tüm bileşenlerin yeniden render edilmesi oldukça maliyetli olabilir. Özellikle karmaşık hesaplamalar veya büyük veri setleriyle çalışan uygulamalarda, gereksiz render işlemleri uygulamanın hızını ciddi şekilde yavaşlatabilir. React, temel olarak verinin değiştiği her durumda yeniden render işlemi başlatır, ancak bazen veriler değişmemişken bile bileşenlerin yeniden render edilmesi gerekebilir. İşte burada `useMemo` ve `useCallback` gibi optimizasyon araçları devreye girer.

useMemo: Hesaplamalı Sonuçları Hafızada Tutmak

`useMemo`, hesaplamalı sonuçları hafızada tutarak gereksiz hesaplamaları önler. Yani, bir hesaplama yalnızca ilgili bağımlılıklar değiştiğinde yeniden yapılır. Eğer bağımlılıklar değişmemişse, React önceden yapılmış hesaplama sonucunu tekrar kullanır. Bu, özellikle büyük veri setleriyle çalışan bileşenlerde ciddi performans kazançları sağlar.

# Örnek Kullanım

Diyelim ki, büyük bir veri setini işleyip, belirli bir değeri hesaplıyorsunuz. Bu hesaplamanın her render işleminde yapılması gerekmiyor, değil mi? İşte `useMemo` burada devreye giriyor.

```jsx
import React, { useMemo, useState } from 'react';

const ExpensiveComponent = ({ items }) => {
const [filter, setFilter] = useState('');

// Bu hesaplama yalnızca 'items' veya 'filter' değiştiğinde yeniden yapılır
const filteredItems = useMemo(() => {
return items.filter(item => item.includes(filter));
}, [items, filter]);

return (

type="text"
value={filter}
onChange={e => setFilter(e.target.value)}
placeholder="Filter items"
/>

    {filteredItems.map((item, index) => (
  • {item}

  • ))}


);
};
```

Bu örnekte, filtreleme işlemi yalnızca `items` veya `filter` değiştiğinde yapılır. Eğer başka bir şey değişirse, React daha önce hesaplanmış olan `filteredItems` listesini kullanır ve gereksiz hesaplama yapılmaz.

useCallback: Fonksiyonları Hafızada Tutmak

`useCallback`, fonksiyonları hafızada tutarak gereksiz yeniden oluşturulmalarını engeller. Özellikle fonksiyonları props olarak başka bileşenlere geçirdiğinizde, her render işleminde yeni bir fonksiyon oluşturulmasını engellemek için kullanılır. Bu, özellikle performansın önemli olduğu büyük ve karmaşık bileşenlerde önemlidir.

# Örnek Kullanım

Diyelim ki bir bileşen, çocuk bileşenine bir fonksiyon prop olarak gönderiyor ve her render işleminde bu fonksiyon yeniden oluşturuluyor. Bu, özellikle fonksiyonlar çok büyük veya bileşenler çok sayıda olduğunda gereksiz renderlara yol açabilir. İşte `useCallback` ile bunu nasıl önleyebileceğinizi görelim:

```jsx
import React, { useCallback, useState } from 'react';

const ChildComponent = React.memo(({ onClick }) => {
console.log('Child rendered');
return ;
});

const ParentComponent = () => {
const [count, setCount] = useState(0);

// useCallback ile 'handleClick' fonksiyonu yalnızca 'count' değiştiğinde yeniden oluşturulur
const handleClick = useCallback(() => {
setCount(prevCount => prevCount + 1);
}, [count]);

return (

Count: {count}




);
};
```

Bu örnekte, `handleClick` fonksiyonu yalnızca `count` değeri değiştiğinde yeniden oluşturulur. Bu, `ChildComponent`'in gereksiz yere yeniden render edilmesini engeller.

useMemo ve useCallback Ne Zaman Kullanılmalı?

Bu araçları kullanırken dikkatli olmalısınız. Çünkü, her durumda performans kazancı sağlamayabilirler. Örneğin, küçük bileşenlerde veya sık değişmeyen verilerle çalışıyorsanız, `useMemo` ve `useCallback` kullanmak ek bir karmaşıklık yaratabilir ve gereksiz olabilir. Bu araçlar genellikle büyük veri setleri, ağır hesaplamalar veya bileşenler arasında sık sık fonksiyon geçişi gibi durumlar için uygundur.

Özetle, `useMemo` ve `useCallback`'i doğru kullanmak, uygulamanızın daha verimli çalışmasını sağlayabilir. Ancak, her zaman "gereksiz yere" kullanmamaya özen gösterin. Her optimizasyonun bir maliyeti vardır ve gereksiz optimizasyonlar, kodun okunabilirliğini zorlaştırabilir.

Sonuç

React'te performans optimizasyonu, özellikle büyük uygulamalar için kritik öneme sahiptir. `useMemo` ve `useCallback`, doğru kullanıldığında uygulamanızın hızını artırabilir ve gereksiz render işlemlerini engelleyebilir. Ancak, her zaman hangi durumların gerçekten performans iyileştirmesi gerektirdiğini iyi analiz etmek önemlidir. Bu araçları yerinde ve zamanında kullanarak, React uygulamanızda ciddi bir performans artışı sağlayabilirsiniz.

İlgili Yazılar

Benzer konularda diğer yazılarımız

Karmaşık Veritabanı Yönetiminde Yeni Nesil Çözümler: Mikroservisler ile Veri Bütünlüğü ve Performans Optimizasyonu

Karmaşık Veritabanı Yapılarına Yenilikçi YaklaşımDijital dönüşümün hızla ilerlediği günümüzde, işletmeler daha büyük veri kümeleriyle başa çıkabilmek için sürekli yenilik arayışında. Geleneksel monolitik veritabanı yapıları, zamanla bu büyüyen veriye...

Kodunuzu Temiz Tutun: Yazılımda 'Yavaş Kodu' Tespit Etmenin 7 Etkili Yolu

Yazılım geliştirme dünyasında zamanın ne kadar kıymetli olduğunu hepimiz biliyoruz. Yazdığınız kodun hızlı ve verimli olması, projelerinizi başarılı kılmanın anahtarıdır. Ama ne yazık ki, çoğu zaman kodu hızlı yazmak uğruna temizliği ihmal edebiliriz....

Web Sitenizi Hızlandırın: 2025'te Performans Optimizasyonu İçin En İyi 10 Strateji

Web sitenizin hızı, günümüzde sadece kullanıcı deneyimini değil, aynı zamanda SEO sıralamalarınızı da doğrudan etkileyen kritik bir faktördür. 2025 yılı itibariyle, hız optimizasyonu sadece bir tercih değil, zorunluluk haline gelmiştir. Hangi sektörde...