React, modern web uygulamaları geliştirmenin en popüler yollarından biridir. Bu yazıda, React'ın çalışma mantığını, bileşenlerin ne zaman güncellendiğini, Sanal DOM ile olan ilişkisini ve bu güncellemeleri optimize etmek için kullanılan useCallback
, React.memo
, ve useMemo
gibi hook'ları inceleyeceğiz.
React, bileşen tabanlı bir yapı kullanır ve her bileşen kendi durumuna sahip olabilir. Bileşenin durumu veya özellikleri değiştiğinde, bileşen yeniden render olur. Bu güncellemeler, kullanıcı arayüzünün daima güncel ve etkileşimli olmasını sağlar.
React'ın performansı, Sanal DOM kavramı ile sağlanır. Sanal DOM, gerçek DOM'un hafif bir kopyasıdır ve değişiklikler öncelikle Sanal DOM üzerinde gerçekleştirilir.
Gerçek DOM'a uygulanan değişiklikler oldukça maliyetli olabilir. React, Sanal DOM üzerinde değişiklikleri hızlı bir şekilde hesaplar, ardından gerçek DOM üzerinde yalnızca gerekli değişiklikleri yapar.
React, performansı artırmak ve gereksiz render'ları önlemek için birkaç önemli hook ve metod sunar.
React.memo
, bileşenin yalnızca özellikleri değiştiğinde yeniden render olmasını sağlar.
Örnek:
const MyComponent = React.memo((props) => {
return <div>{props.name}</div>;
});
MyComponent
bileşeni yalnızca props.name
değiştiğinde yeniden render olur.
useCallback
hook'u, gereksiz fonksiyon yeniden oluşturmalarını önlemek için kullanılır. Aynı fonksiyon referansını korur, böylece bileşenlerin gereksiz yere yeniden render olmalarını engeller.
Örnek:
const MyComponent = (props) => {
const handleClick = useCallback(() => {
console.log('Tıklandı');
}, []);
return <button onClick={handleClick}>Tıkla</button>;
};
useMemo
hook'u, pahalı hesaplamaların gereksiz yere tekrar tekrar yapılmasını önler.
Örnek:
const ExpensiveComponent = (props) => {
const computedValue = useMemo(() => {
// Burada pahalı bir hesaplama yapılır
}, [props.input]);
return <div>{computedValue}</div>;
};
React'ın arkasındaki çalışma mantığı ve optimizasyon teknikleri, uygulamanızın hem kullanıcı deneyimini hem de performansını artırabilir. React.memo
, useCallback
, ve useMemo
gibi araçlar, geliştiricilere bileşenlerin ne zaman ve nasıl güncelleneceğini daha hassas bir şekilde kontrol etme olanağı sunar. Uygulamanızın ihtiyaçlarına uygun olarak bu tekniklerden yararlanmak, daha hızlı ve etkili bir kullanıcı arayüzü oluşturmanıza yardımcı olabilir.