javascript - react 使用手势 useScroll 未检测到滚动事件

标签 javascript reactjs react-spring

我正在尝试使用react-use-gesture库,但似乎甚至无法让一些简单的 Hook 工作。我正在尝试使用 useScroll 钩子(Hook)(最终让动画与react-spring一起运行),但是当我将它绑定(bind)到我的组件时,什么也没有发生。

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;

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

最佳答案

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

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>
  );
}

Edit vibrant-night-mrb6f

很好奇为什么滚动事件没有被拾取,但鼠标事件却被拾取。也许this为此事提供了一些线索。

编辑

能够通过传递可选的配置对象来实现滚动,在本例中,将 DOM 目标设置为 window。根据Options explained建议使用效果钩子(Hook)而不是作为 Prop 传播(尽管它在codesandbox传播中起作用)。

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>
  );
}

关于javascript - react 使用手势 useScroll 未检测到滚动事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60557815/

相关文章:

javascript - useEffect 和 'react-hooks/exhaustive-deps' linting

reactjs - 使用动态模块进行代码分割?

reactjs - 带有反应 Spring 动画的 react 三纤维

javascript - 无法在 Ionic 3 中链式 promise

javascript - 更改 Arshaw 全日历的当前日期?

javascript - Warp.js 帮助 Javascript 改变时间速度

reactjs - 我的点击处理程序在 React 中使用不同的值触发两次

javascript - react JS : Calling two functions in an onClick event does not run functions

javascript - react-spring - 在内容变化时为 <p> 元素设置动画

javascript - 如何让一个对象继承其原型(prototype)中的两个对象?