CodeBlanks Logo Icon CodeBlanks

Özel karşılaştırıcı

İkinci argüman ile özel karşılaştırıcı yazmayı öğrenirsin.

Özel karşılaştırıcı

Bazen sığ karşılaştırma yetersiz kalır. Örneğin prop derin bir nesne içeriyorsa ya da yalnızca bir alan değiştiğinde çizim istiyorsan. Bu durumda ikinci parametre olarak karşılaştırıcı fonksiyon verirsin.

const MemoX = memo(X, (prev, next) => prev.user.id === next.user.id);. Fonksiyon true dönerse çizim atlanır; false dönerse yapılır.

Bu güçlü ama tehlikelidir: yanlış karşılaştırma bug'lara yol açar. Yalnızca gerçekten gerekli olduğunda kullan; mümkün olduğunca sığ karşılaştırma + useCallback yeterli olacaktır.

Derin karşılaştırma tehlikesi

Bazı geliştiriciler JSON.stringify(prev) === JSON.stringify(next) ile derin karşılaştırma yapar. Bu yavaşdır; her render'da tüm nesneyi dizeye çevirir. Büyük nesnelerde ciddi performans kaybı olur.

Daha iyi yöntem: yalnızca ilgili alanları karşılaştırmak. (prev, next) => prev.user.id === next.user.id && prev.theme === next.theme gibi.

En iyisi, prop tasarımını basit tutmaktır. Derin nesneler yerine ilkel değerler geçmek, hem memo'yu kolaylaştırır hem de kodun okunurluğunu artırır. Bu tasarım ilkesi React'te sıklıkla önerilir.

Uygulama Özel karşılaştırıcı

Aşağıdaki iskeleti tamamla. Item bileşeni yaz; ({ '{ item }' }) alsın ve <li>{ '{ item.name }' }</li> döndürsün. const MemoItem = memo(Item, (prev, next) => prev.item.id === next.item.id); ile sar. MemoItem'i dışa aktar.

Başlangıç kodu

App.jsx
import { memo } from "react";

// Item ve MemoItem'ı buraya yaz

Örnek çözüm

App.jsx
import { memo } from "react";

function Item({ item }) {
  return <li>{item.name}</li>;
}

const MemoItem = memo(Item, (prev, next) => prev.item.id === next.item.id);

export default MemoItem;

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Özel karşılaştırıcı ne dönerse çizim atlanır?

  • null
  • false
  • undefined
  • true Doğru cevap

Açıklama: true dönerse çizim atlanır.

2 Karşılaştırıcı parametreleri

Soru
Karşılaştırıcı fonksiyon ____ parametre alır.
Cevap
Karşılaştırıcı fonksiyon prev ve next parametre alır.

Açıklama: prev ve next parametre alır.

3 Özel karşılaştırıcıyı eşleştir

Kavram Anlamı
prev/next parametre
true atla
false çiz
alan karşılaştır

Orta seviye bölümündeki tüm dersler