CodeBlanks Logo Icon CodeBlanks

Birleştirme

Tüm uzman konularını birleştirerek çalışan bir mini uygulama yazarsın.

Tüm uzman konularını birleştir

Son derste tüm parçaları bağlıyoruz: yeni mimari (Fabric), performance (useMemo) ve monorepo (paylaşılan paket). App, metricKeys'i useMemo ile hesaplar; her anahtarı MetricCard ile çizer; değer formatMetric ile biçimlenir.

Bu birleşim, uzman seviye bir React Native uygulamasının iskeletidir. Yeni mimari hızlı render, useMemo önbellek, monorepo kod paylaşımı sağlar. Her katman ayrı bir derste kuruldu; şimdi hepsi birlikte çalışıyor. Bir sonraki adımda map ile metricKeys'i MetricCard listesine çevireceksin.

Uygulama MetricCard listesi çiz

Önceki kodun üstüne App'in dönüşüne bir metricKeys.map çağrısı ekle. Her anahtar için <MetricCard label={key} value={formatMetric(metrics[key])} /> döndürsün. key prop'unu da ekle.

Başlangıç kodu

App.js
import { formatMetric } from '@myorg/utils';
import React, { useState } from 'react';
import { Text, View } from 'react-native';

function App() {
  const [metrics, setMetrics] = useState({});
  return (
    <View>
      <Text>İzleme Paneli</Text>
    </View>
  );
}

const MetricCard = memo(function MetricCard({ label, value }) {
  return <Text>{label}: {value}</Text>;
});

function App() {
  const [metrics, setMetrics] = useState({});
  const metricKeys = useMemo(() => Object.keys(metrics), [metrics]);
  return (
    <View>
      <Text>İzleme Paneli</Text>
    </View>
  );
}

// App dönüşünde metricKeys.map ile MetricCard listesi çiz

Örnek çözüm

App.js
import { formatMetric } from '@myorg/utils';
import React, { useState } from 'react';
import { Text, View } from 'react-native';

function App() {
  const [metrics, setMetrics] = useState({});
  return (
    <View>
      <Text>İzleme Paneli</Text>
    </View>
  );
}

const MetricCard = memo(function MetricCard({ label, value }) {
  return <Text>{label}: {value}</Text>;
});

function App() {
  const [metrics, setMetrics] = useState({});
  const metricKeys = useMemo(() => Object.keys(metrics), [metrics]);
  return (
    <View>
      <Text>İzleme Paneli</Text>
    </View>
  );
}

function App() {
  const [metrics, setMetrics] = useState({ cpu: 42, mem: 60 });
  const metricKeys = useMemo(() => Object.keys(metrics), [metrics]);
  return (
    <View>
      <Text>İzleme Paneli</Text>
      {metricKeys.map((key) => (
        <MetricCard key={key} label={key} value={formatMetric(metrics[key])} />
      ))}
    </View>
  );
}

Soru ve cevaplar

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

1 metricKeys neyle hesaplanır?

App.js
const metricKeys = ?(() => Object.keys(metrics), [metrics]);
  • useState
  • useMemo Doğru cevap
  • useEffect
  • useRef

Açıklama: useMemo ile önbelleğe alınır.

2 Katmanı rolüne eşle

Kavram Anlamı
Fabric Hızlı render
useMemo Önbellek
formatMetric Biçimleme
MetricCard Bileşen

3 map çağrısı

Soru
{____.map((key) => <MetricCard key={key} label={key} />)}
Cevap
{metricKeys.map((key) => <MetricCard key={key} label={key} />)}

Açıklama: metricKeys.map ile liste çizilir.

4 Bu projede monorepo nasıl kullanıldı?

App.js
import { formatMetric } from '@myorg/utils';
  • Bildirim ile
  • Animasyon ile
  • Tema ile
  • Paylaşılan paket ile Doğru cevap

Açıklama: @myorg/utils paylaşılan monorepo paketidir.

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