CodeBlanks Logo Icon CodeBlanks

useAnimatedStyle

useAnimatedStyle ile animasyonlu stil öğrenirsin.

useAnimatedStyle

useAnimatedStyle, paylaşılan değere göre animasyonlu bir stil nesnesi üretir. Dönen stil, Animated.View'in style prop'una verilir. Örnek: const animatedStyle = useAnimatedStyle(() => ({ transform: [{ translateX: offset.value }] })).

İşlev içinde .value okunur ve bir stil nesnesi döndürülür. Bu stil, değer değiştikçe UI iş parçacığında otomatik yeniden hesaplanır. JavaScript tarafında render tetiklenmez; bu yüzden animasyonlar çok akıcıdır.

Animated.View ile kullanım

Animasyonlu stili uygulamak için Animated.View'in style prop'una verilir. Örnek: <Animated.View style={[styles.box, animatedStyle]} />. Burada styles.box statik, animatedStyle dinamik stilleri taşır. İkisi birleştirilir.

Stillerin bir dizi içinde verilmesi önemlidir; bu sayede hem sabit hem animasyonlu stiller birlikte çalışır. Animated.View, normal View'ın animasyonlu sürümüdür; UI iş parçacığında güncellenir.

Uygulama Animasyonlu stili yaz

useAnimatedStyle'ı react-native-reanimated'dan içe aktar. const animatedStyle = useAnimatedStyle(() => ({ transform: [{ translateX: offset.value }] })) ile animasyonlu stil üret. offset'i useSharedValue(0) ile tanımla.

Başlangıç kodu

App.js
import React from 'react';
import { useSharedValue } from 'react-native-reanimated';

export function useMove() {
  const offset = useSharedValue(0);
  // animatedStyle'i useAnimatedStyle ile tanımla

  return { offset, animatedStyle };
}

Örnek çözüm

App.js
import React from 'react';
import { useAnimatedStyle, useSharedValue } from 'react-native-reanimated';

export function useMove() {
  const offset = useSharedValue(0);
  const animatedStyle = useAnimatedStyle(() => ({
    transform: [{ translateX: offset.value }],
  }));

  return { offset, animatedStyle };
}

Soru ve cevaplar

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

1 useAnimatedStyle çağrısı

Soru
const animatedStyle = ____(() => ({ transform: [{ translateX: offset.value }] }));
Cevap
const animatedStyle = useAnimatedStyle(() => ({ transform: [{ translateX: offset.value }] }));

Açıklama: useAnimatedStyle animasyonlu stil üretir.

2 Stil parçalarını eşle

Kavram Anlamı
useAnimatedStyle Stil üretir
Animated.View Stili uygular
translateX Yatay kaydırma
offset.value Stil kaynağı

3 Animated.View neden tercih edilir?

  • Çünkü UI iş parçacığında güncellenir
  • Çünkü hook değildir
  • Çünkü stilleri siler
  • Çünkü daha az bellek kullanır Doğru cevap

Açıklama: Animated.View UI iş parçacığında güncellenir; akıcıdır.

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