CodeBlanks Logo Icon CodeBlanks

React Profiler

React Profiler ve render sürelerini öğrenirsin.

React Profiler

React, bileşen başına render süresini ölçen Profiler bileşeni verir. <Profiler> ile sarılan her bileşen için onRender callback'i çağrılır ve ayrıntılı süre bilgisi verir.

Callback; bileşen kimliği, aşama (mount/update) ve geçen süreleri alır. Bu, hangi bileşenin yavaş olduğunu görmeyi sağlar. React DevTools'ta görsel Profiler da vardır; grafik olarak süreleri çizer.

Render aşamaları

Profiler phase parametresi iki değer alır: mount (ilk render) ve update (state/props değişti). Her aşamanın süresi farklıdır; mount genelde daha uzundur ve tüm alt bileşenleri çizer.

actualDuration bu render'ın gerçekte aldığı süredir. baseDuration memoization olmadan alacağı süredir. İkisi arasındaki fark memo kazancını gösterir.

Uygulama Profiler ile sarma

Bir List bileşenini Profiler ile sar. onRender callback'i (id, phase, actualDuration) => console.log(id, phase, actualDuration) olsun. Profiler'ı React'ten içe aktar.

Başlangıç kodu

App.js
import React from 'react';

function List() {
  return null;
}

// List'i Profiler ile sar ve dışa aktar

Örnek çözüm

App.js
import React, { Profiler } from 'react';

function List() {
  return null;
}

const WrappedList = () => (
  <Profiler id="list" onRender={(id, phase, actualDuration) => console.log(id, phase, actualDuration)}>
    <List />
  </Profiler>
);

export default WrappedList;

Soru ve cevaplar

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

1 Profiler callback adı

Soru
<Profiler ____={(id, phase, actualDuration) => console.log(id, phase)}>
Cevap
<Profiler onRender={(id, phase, actualDuration) => console.log(id, phase)}>

Açıklama: onRender her render'da çağrılır.

2 actualDuration neyi ölçer?

  • Bu render'ın gerçek süresini
  • Toplam uygulama boyutunu
  • Ağ istek sayısını
  • Bellek kullanımını Doğru cevap

Açıklama: actualDuration bu render'ın gerçek süresidir.

3 Profiler parçalarını eşleştir

Kavram Anlamı
mount İlk render
update State/props değişti
actualDuration Gerçek süre
baseDuration Memoization'sız süre

Uzman bölümündeki tüm dersler