小编tic*_*kie的帖子

使用hooks时如何为panResponder设置Offset?

我找到了一个代码示例,演示了如何使用 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)

javascript drag-and-drop reactjs react-native react-hooks

3
推荐指数
1
解决办法
4319
查看次数