gpt4 book ai didi

javascript - 使用 react-native-gesture-handler 中的 PanGestureHandler 时位置重置为 0

转载 作者:行者123 更新时间:2023-12-05 00:56:06 25 4
gpt4 key购买 nike

import React, { useRef, useState, useCallback } from 'react';
import { View, Animated } from 'react-native';
import { PanGestureHandler } from 'react-native-gesture-handler';


const InfoBox = ({ info }: Props) => {
const [currenPos, setCurrentPos] = useState<number>(0);
const translateY = useRef(new Animated.Value(0)).current;

const onGestureEvent = useCallback(
Animated.event(
[
{
nativeEvent: {
translationY: translateY,
},
},
],
{
useNativeDriver: true,
},
),
[],
);

const handleTransformStyle = {
transform: [
{
translateY,
},
{
translateX: -55,
},
],
};

return (
<View style={styles.container}>
<PanGestureHandler
onGestureEvent={onGestureEvent}
>
<Animated.View style={[styles.handleBar, handleTransformStyle]}>
<View style={styles.separator} />
</Animated.View>
</PanGestureHandler>
</View>
);
};

export default InfoBox;

我提供了一个非常简单的 PanGestureHandler 示例。第一次移动盒子时,它会移动到一个位置并停留在那个位置。但是,如果我再次尝试移动它,它会从零位置开始,而不是从我离开它的相同位置开始。

任何帮助将不胜感激。

编辑

我已经意识到这是由于偏移量被重置而发生的。

最佳答案

我已经找到了解决这个问题的方法。

onHandlerStateChange添加到PanGestureHandler:

 <PanGestureHandler
onGestureEvent={onPanGestureEvent}
onHandlerStateChange={onHandlerStateChange}
>
...
</PanGestureHandler>

然后,像这样创建一个 onHandlerStateChange 函数:

  const onHandlerStateChange = useCallback(() => {
translateY.extractOffset();
}, []);

translateY.extractOffset(); 施展了魔法。它设置偏移值。呸!

关于javascript - 使用 react-native-gesture-handler 中的 PanGestureHandler 时位置重置为 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62944398/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com