reactjs - 拖放行为在 useGesture 上
问题描述
我正在使用 react-use-gesture 沿 x 轴拖动 div。它没有做任何花哨的事情,只是存储移动x
值并使用它来抵消left
div 的 css 属性。代码使用useState
钩子来存储累积的 x 偏移量,并且状态的设置会触发重新渲染。
此处示例:https://3upld.csb.app/ ( https://codesandbox.io/embed/react-usegesture-test-forked-3upld?file=/src/index.js&codemirror=1 )
下面的代码
export default function Home() {
const [offset, setOffset] = useState(0);
const bind = useGesture(
{
onDrag: ({ movement: [mx] }) => {
console.log("x", mx);
setOffset(mx);
}
},
{
drag: {
initial: () => [offset, 0]
}
}
);
return (
<>
<h1 className="font-bold text-3xl">React useGesture test</h1>
<div className="relative">
<div
{...bind()}
className="absolute bg-red-600 h-48 w-48"
style={{ left: `${100 + offset}px` }}
>
Box
</div>
</div>
</>
);
}
当我查看这个浏览器时,它工作得很好——我可以四处拖动。当我将浏览器切换到仿真时,它不会拖动超过几个像素。请参阅下面的示例 gif。
我也在 Android 手机上的 Chrome(出现问题)和 iPad Pro 上的 Safari(如果我缓慢拖动不会出现问题)上对此进行了测试。
有谁知道为什么这在移动设备上运行不顺畅?谢谢
解决方案
尝试touch-action: none;
在css中设置。
https://use-gesture.netlify.app/docs/extras/
推荐阅读
- c# - 如何获取 XDocument 中其值与某些条件匹配的所有元素
- python - 如何缩放矩阵的每一列
- java - 运行spring boot应用程序时找不到或加载主类
- command-line - 将文本文件(包含文件列表)移动到存档文件夹的命令
- java - 我不知道这个输出是怎么来的。谁能解释一下这个程序的输出?
- python - 每个点的带有颜色编码值的散点图(如颜色网格)
- cxf - BinarySecurityToken 使用 Apache WSS4J / CXF 用 XML 转义字符修改
- javascript - 在成功功能上向 javascript 添加引导警报
- java - 我想在 CodenameOne 中使用 RSSReader
- amazon-web-services - 为 AWS Route 53 中的域托管区域获取 SSL 证书