获取浏览器/反应以区分在元素容器上水平滚动与拖动该容器中的单个元素

Get browser/react to distinguish between scrolling horizontally on a container of elements from dragging an individual element in that container

提问人:Randy Tang 提问时间:10/22/2023 更新时间:10/22/2023 访问量:11

问:

我有一个带有 react 组件的容器,我可以水平滚动浏览,这是我想要的行为,但是当我尝试专注于单个组件/元素以将其拖到容器中时,容器/页面仍然想要滚动。我正在 react 中开发,只有当我在元素的 CSS 上启用/切换“touch-action”为“none”时,我才能实现我想要的拖动行为,但这样做会禁用包含这些 react 元素/组件的容器上的水平滚动。

我想调用“setTimeout”来触发“pointerDown”,该函数检查指针在短时间(即 1 秒)后是否仍处于关闭状态,以指示用户想要拖动元素而不是滚动,但我在文档中找不到 API 调用/方法来检查指针是否仍处于关闭状态。

我尝试的一种方法是调用“setTimeout”传入一个函数,该函数会在 1 秒后将可拖动元素上的“touch-action”切换为“none”,然后在“pointerUp”事件上,我调用“clearTimeout”来取消该“setTimeout”,因为如果“pointerUp”事件在“pointerDown”之后快速发生,这可能意味着用户正在滚动而不是尝试拖动,但该方法不起作用,因为“clearTimeout”未能取消“pointerDown”事件中的“setTimeout”。所以不知道在这一点上该怎么做。任何指导将不胜感激!

reactjs 滚动 可拖拽 preventdefault 指针事件

评论


答: 暂无答案