PanResponder olayı nasıl hesaplanır ve algılanır?

0

Soru

Animasyon ve jest işleyicisinde oldukça yeniyim. Resmi react yerel animasyonlarındaki belgeleri okuyorum ve mavi kutunun etrafında dolaşmanıza izin veren bu kodun bir parçasını buldum.

https://reactnative.dev / dokümanlar / animasyonlar

import React, { useRef } from "react";
import { Animated, View, StyleSheet, PanResponder, Text } from "react-native";

const App = () => {
  const pan = useRef(new Animated.ValueXY()).current;
  const panResponder = useRef(
    PanResponder.create({
      onMoveShouldSetPanResponder: () => true,
      onPanResponderMove: Animated.event([
        null,
        { dx: pan.x, dy: pan.y }
      ]),
      onPanResponderRelease: () => {
        Animated.spring(pan, { toValue: { x: 0, y: 0 } }).start();
      }
    })
  ).current;

  return (
    <View style={styles.container}>
      <Text style={styles.titleText}>Drag & Release this box!</Text>
      <Animated.View
        style={{
          transform: [{ translateX: pan.x }, { translateY: pan.y }]
        }}
        {...panResponder.panHandlers}
      >
        <View style={styles.box} />
      </Animated.View>
    </View>
  );
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    alignItems: "center",
    justifyContent: "center"
  },
  titleText: {
    fontSize: 14,
    lineHeight: 24,
    fontWeight: "bold"
  },
  box: {
    height: 150,
    width: 150,
    backgroundColor: "blue",
    borderRadius: 5
  }
});

export default App;

Ancak, teselli etmek istiyorum.panresponder hareket ettiğinde oturum açın veya sone hesaplamaları yapın, bu yüzden oppanrespondermove'umu değiştirmeyi denedim ancak mavi kutu artık hareket etmiyor. Neden acaba?

Değiştirilmiş kodum:

onPanResponderMove: (event, gestureState) => {
        console.log(event);
        console.log(gestureState);
        Animated.event([
            null,
            { dx: pan.x, dy: pan.y }
          ])
      },
animation react-native
2021-11-24 01:44:24
1

En iyi cevabı

1

Burada sorununuzla ilgili bir sorun vardı.

Dedi ki

Sebebi Animasyondu.event () yalnızca onpanrespondermove'dan kullanılan işlevi üretir, ayrıca evt, gestureState varsayılan argümanlarına da ihtiyaç duyar

ve işte düzeltme:

onPanResponderMove: (event, gestureState) => {
        console.log(event);
        console.log(gestureState);
        return Animated.event([
            null,
            { dx: pan.x, dy: pan.y }
          ])(event,gestureState);
      },
2021-11-24 03:51:12

Diğer dillerde

Bu sayfa diğer dillerde

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................