CodeBlanks Logo Icon CodeBlanks

Bottleneck

Performans bottleneck tespitini öğrenirsin.

Darboğaz (bottleneck)

Darboğaz, uygulamanın yavaşlamasına neden olan tek noktadır. React Native'de yaygın nedenler: ağır FlatList, gereksiz re-render, senkron native çağrı ve büyük resimlerin decode edilmesidir.

Profil çıktısına bakıp en çok zaman harcanan yeri bulursun. Tüm optimizasyonlar tek yerde toplanmaz; en büyük darboğazı çöz, tekrar ölç, bir sonrakine geç.

Re-render'ı azaltma

React, state ya da props değiştiğinde bileşeni yeniden çizer. Gereksiz re-render'ı azaltmak için React.memo, useMemo ve useCallback kullanılır. Stabil referanslar props karşılaştırmasını hızlandırır.

Liste içinde her öğe memo ile sarılıysa yalnızca değişen öğe yeniden çizilir. keyExtractor da doğru kurulmalı; yoksa tüm liste yeniden çizilir.

Uygulama useCallback ile stabil fonksiyon

Bir handlePress fonksiyonunu useCallback ile sar. Bağımlılık dizisi boş olsun. Fonksiyon () => console.log('tıklandı') olsun.

Başlangıç kodu

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

// handlePress'i useCallback ile tanımla

export default function App() {
  return null;
}

Örnek çözüm

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

const handlePress = useCallback(() => console.log('tıklandı'), []);

export default function App() {
  return null;
}

Soru ve cevaplar

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

1 Darboğaz nedenlerini eşleştir

Kavram Anlamı
FlatList Ağır liste
Re-render Gereksiz çizim
Büyük resim Decode maliyeti
Native çağrı Senkron blok

2 Gereksiz re-render'ı azaltmak için hangisi kullanılır?

  • Platform.OS Doğru cevap
  • AsyncStorage
  • FlatList
  • React.memo

Açıklama: React.memo props değişmediyse yeniden çizimi atlar.

3 useCallback importunu yaz

Soru
import { useState, ____ } from 'react';
Cevap
import { useState, useCallback } from 'react';

Açıklama: useCallback fonksiyon referansını stabilize eder.

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