CodeBlanks Logo Icon CodeBlanks

Auth ve API

Auth context ve API entegrasyonu yazarsın.

Auth context ekle

Bu derste AuthContext oluşturup App'i provider ile saracağız. createContext(null) ile başlatırız; null varsayılan değer, giriş yapılmamış durumu gösterir. Bir useAuth hook'u ile context'i okuruz.

Auth state'i user ve setUser tutar. Giriş başarılı olunca setUser(token) çağrılır; çıkışta setUser(null). Provider'ın value'şu bu ikisini verir. API isteği yapmadan önce const { user } = useAuth() ile token'ı alırsın; Authorization başlığına eklersin. Bu desen, orta ve büyük uygulamaların temelidir.

API fetch ile görev yükle

Auth context'i kurunca useEffect içinde fetch çağırırız. URL 'https://api.example.com/tasks'. Authorization başlığına user token'ını ekleriz. Dönen JSON'u setTasks ile state'e yazarız.

Örnek: fetch(url, { headers: { Authorization: 'Bearer ' + user } }). Bağımlılık dizisi [user] olur; böylece user değişince istek yeniden atılır. Hata yönetimi için .catch eklenir. Bu akış, gerçek uygulamaların veri yükleme standardıdır: önce auth, sonra veri.

Uygulama AuthContext ve provider ekle

Bir AuthContext oluştur (createContext(null) ile). useAuth hook'unu yaz (useContext ile). App içinde useState(null) ile user state'i tut; dönüşü <AuthContext.Provider value={{ user, setUser }}> ile sar.

Başlangıç kodu

App.js
import React, { useState } from 'react';
import { Text, View } from 'react-native';

function App() {
  const [tasks, setTasks] = useState([]);
  return (
    <View>
      <Text>Saha Raporu</Text>
    </View>
  );
}

// giriş context'ini ve provider'ı buraya ekle

Örnek çözüm

App.js
import React, { useState } from 'react';
import { Text, View } from 'react-native';

function App() {
  const [tasks, setTasks] = useState([]);
  return (
    <View>
      <Text>Saha Raporu</Text>
    </View>
  );
}

const AuthContext = createContext(null);
export function useAuth() { return useContext(AuthContext); }

function App() {
  const [tasks, setTasks] = useState([]);
  const [user, setUser] = useState(null);
  return (
    <AuthContext.Provider value={{ user, setUser }}>
      <View>
        <Text>Saha Raporu</Text>
      </View>
    </AuthContext.Provider>
  );
}

Soru ve cevaplar

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

1 createContext çağrısı

Soru
const AuthContext = ____(null);
Cevap
const AuthContext = createContext(null);

Açıklama: createContext yeni bir context oluşturur.

2 useAuth hook'u ne döndürür?

App.js
const { user } = useAuth();
  • Bir state
  • Bir context
  • Context değerini Doğru cevap
  • Bir dizi

Açıklama: useAuth context değerini döndürür.

3 Parçayı rolüne eşle

Kavram Anlamı
AuthContext Context tanımı
Provider Değeri sağlar
useAuth Değeri okur
user Token taşıyan state

İleri seviye bölümündeki tüm dersler