我找到了一个代码示例,演示了如何使用 panResponder 在 React Native 中进行拖放操作。您可以尝试以下小吃中的代码:
https://snack.expo.io/S14RvxJ_L
我面临的问题是,如果您将项目放在放置区域然后触摸它,则位置会一直重置。
我希望用户能够将项目拖离放置区域而不会出现此问题。再次澄清一下:您将项目拖到放置区域,它将被涂成红色。现在再次拖动该项目并尝试拖动到您想要的任何位置,位置将被重置。我尝试用钩子设置圆圈的初始位置,尝试用起始值设置手势的 y0 和 x0 。到目前为止还没有成功。
到目前为止我发现,我可以在 onPanResponderGrant 中使用 pan.setOffset() 。但由于平底锅是使用 useRef() 创建的,因此它是可变的并且无法更改,或者更好的是我不知道如何更改。
我如何以最好的方式实现这一点?
import React from 'react';
import { StyleSheet, View, Text, Dimensions, Animated, PanResponder } from 'react-native';
export default function Drag() {
const dropZoneValues = React.useRef(null);
const pan = React.useRef(new Animated.ValueXY());
const [bgColor, setBgColor] = React.useState('#2c3e50');
const isDropZone = React.useCallback((gesture) => {
const dz = dropZoneValues.current;
return gesture.moveY > dz.y && gesture.moveY < dz.y + dz.height;
}, []);
const onMove = …Run Code Online (Sandbox Code Playgroud)