首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >反应-使用手势useScroll不检测滚动事件

反应-使用手势useScroll不检测滚动事件
EN

Stack Overflow用户
提问于 2020-03-06 04:56:13
回答 2查看 3K关注 0票数 0

我试图使用反应-使用手势库,但似乎连一些简单的钩子都无法工作。我正在尝试使用useScroll钩子(最终获得一个带有react的动画),但是当我将它绑定到我的组件时,什么都不会发生。

代码语言:javascript
复制
import { useScroll} from 'react-use-gesture';

function App() {
    const bind = useScroll((e) => {
        e.scrolling ? console.log("I'm being scrolled") : console.log("I'm not being scrolled");

    });
    return (
        <div className="App" {...bind()}>
            // All of my other components in App
        </div>
    );
}

export default App;

我有种感觉我错过了一些明显的东西。有人有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-03-06 06:54:42

奇怪的是,我也无法让useScroll钩子工作,但是useWheel钩子工作得很好。

代码语言:javascript
复制
import React from "react";
import { useWheel } from "react-use-gesture";
import "./styles.css";

export default function App() {
  const wheel = useWheel(state => {
    console.log("wheeling", state.wheeling);
  });
  return (
    <div className="App" {...wheel()}>
      <h1>Hello CodeSandbox</h1>
      <h2>Start editing to see some magic happen!</h2>
    </div>
  );
}

我很好奇为什么滚动事件没有被捡起来,但是鼠标事件却是。也许对这件事有一点了解。

编辑

通过传递可选的配置对象(在本例中,将DOM目标设置为window ),可以使滚动工作。根据解释备选方案,建议使用效果钩子,而不是将其作为支柱(虽然它在代码框中有效)。

代码语言:javascript
复制
export default function App() {
  const scroll = useScroll(state => {
    console.log("scrolling", state.scrolling);
  }, {
    domTarget: window,
  });

  useEffect(scroll, [scroll]);

  return (
    <div className="App" >
      <h1>Hello CodeSandbox</h1>
      <h2>Start editing to see some magic happen!</h2>
    </div>
  );
}
票数 3
EN

Stack Overflow用户

发布于 2021-10-21 14:27:50

您只需要在容器的样式中将overflow属性设置为scroll,否则将不会触发窗口旁边的滚动事件。

代码语言:javascript
复制
import { useScroll } from 'react-use-gesture';

function App() {
    const bind = useScroll((e) => {
        e.scrolling ? console.log("I'm being scrolled") : console.log("I'm not being scrolled");

    });
    return (
        <div className="App" style={{overflow: 'scroll'}} {...bind()}>
            // All of my other components in App
        </div>
    );
}

export default App;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60557815

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档