CodeBlanks Logo Icon CodeBlanks

Ön/arka kamera

Ön ve arka kamera değişimini öğrenirsin.

Ön ve arka kamera

Telefonun iki kamerası vardır: ön (selfie) ve arka. expo-camera, bu seçimi CameraType sabitiyle yapar. CameraType.back arka kamera, CameraType.front ön kameradır. Camera bileşenine type prop olarak verilir.

Seçimi state'te tutarsın: const [type, setType] = React.useState(CameraType.back). Düğmeye basınca setType(type === CameraType.back ? CameraType.front : CameraType.back) ile değiştirirsin. Bu basit toggle kalıbı, kullanıcıya tek dokunuşla kamera değiştirme imkânı verir.

Toggle kalıbı

Kamera değiştirme düğmesi bir toggle işlevine bağlanır. İşlev, mevcut type değerine bakar ve tersine çevirir. Yazım: setType(prev => prev === CameraType.back ? CameraType.front : CameraType.back). Burada prev önceki değeri temsil eder.

State güncellemede prev kullanmak en sağlam yöntemdir; çünkü ardışık çağrılarda her zaman güncel değeri alır. Düğmenin onPress'ine bu işlevi verirsin. Kullanıcı düğmeye her bastığında kamera ön ve arka arasında geçiş yapar; bu, modern kamera uygulamalarının standart bir özelliğidir.

Uygulama Kamera değiştirme düğmesi ekle

Boş toggleCamera işlevini tamamla. setType(prev => prev === CameraType.back ? CameraType.front : CameraType.back) yaz. type ve setType parametre olarak verilir.

Başlangıç kodu

App.js
import { CameraType } from 'expo-camera';

export function toggleCamera(type, setType) {
  // kamera türünü değiştir
}

Örnek çözüm

App.js
setType(prev => prev === CameraType.back ? CameraType.front : CameraType.back);

Soru ve cevaplar

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

1 type prop'unu yaz

Soru
<Camera ____={type} style={{ flex: 1 }} />
Cevap
<Camera type={type} style={{ flex: 1 }} />

Açıklama: type prop kamera seçimini alır.

2 Sabitleri anlamına eşle

Kavram Anlamı
CameraType.back Arka kamera
CameraType.front Ön kamera
type Seçim prop'u
setType Seçimi günceller

3 setType ile toggle yazarken ne kullanılır?

App.js
setType(?? => ?? === CameraType.back ? CameraType.front : CameraType.back)
  • prev Doğru cevap
  • current
  • next
  • type

Açıklama: prev güncel değeri temsil eder.

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