CodeBlanks Logo Icon CodeBlanks

onPanResponderMove

onPanResponderMove ile sürükleme öğrenirsin.

onPanResponderMove

onPanResponderMove, jest aktifken parmak hareket ettikçe çağrılır. Burada bileşenin konumunu güncellersin. gestureState.dx ve gestureState.dy başlangıçtan beri toplam hareketi verir.

Örnek: onPanResponderMove: (evt, g) => setPos({ x: g.dx, y: g.dy }). Her karede parmağın yeni konumu state'e yazılır; bileşen parmakla beraber hareket eder.

gestureState değerleri

gestureState jest hakkında zengin veri taşır. dx, dy başlangıçtan itibaren toplam yer değiştirme; moveX, moveY parmağın o anki konumu; vx, vy hız.

En sık dx ve dy kullanılır; bunlar sürükleme miktarını verir. Konumu bu değerlerle hesaplayıp bileşene uygularsın.

Uygulama Konumu move ile güncelle

Bir PanResponder yarat. onMoveShouldSetPanResponder: () => true ve onPanResponderMove: (evt, g) => setPos({ x: g.dx, y: g.dy }) olsun. pos state'i useState({ x: 0, y: 0 }) ile tanımlı. <View {...pan.panHandlers} /> döndür.

Başlangıç kodu

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

export default function Drag() {
  const [pos, setPos] = useState({ x: 0, y: 0 });
  // PanResponder ekle; sürükleme sırasında pos'u güncelle
  return <View />;
}

Örnek çözüm

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

export default function Drag() {
  const [pos, setPos] = useState({ x: 0, y: 0 });
  const pan = PanResponder.create({
    onMoveShouldSetPanResponder: () => true,
    onPanResponderMove: (evt, g) => setPos({ x: g.dx, y: g.dy }),
  });
  return <View {...pan.panHandlers} />;
}

Soru ve cevaplar

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

1 move kavramlarını eşleştir

Kavram Anlamı
onPanResponderMove Hareket sırası
dx Yatay hareket
dy Dikey hareket
gestureState Jest verisi

2 onPanResponderMove ne zaman çağrılır?

  • Yalnızca release anında
  • Jest aktifken her hareket Doğru cevap
  • Mount sırasında
  • Hiçbir zaman

Açıklama: Jest aktifken her parmak hareketinde çağrılır.

3 move geri çağrısı

Soru
PanResponder.create({ ____: (evt, g) => setPos({ x: g.dx, y: g.dy }) });
Cevap
PanResponder.create({ onPanResponderMove: (evt, g) => setPos({ x: g.dx, y: g.dy }) });

Açıklama: onPanResponderMove sürükleme sırasında çağrılır.

Orta seviye bölümündeki tüm dersler