You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Three.js中使用useScroll()时滚动偏移值不一致问题

关于@react-three/drei useScroll钩子滚动偏移值异常的问题

我正在开发一个基于React Three.js和Theatre.js的应用,集成了@react-three/drei的useScroll钩子捕获滚动信息,但遇到滚动偏移值不一致的问题:向下滚动时,偏移值偶尔会从0变为负数,而非预期的持续正数。

预期行为

向下滚动时,滚动偏移值应持续为正数,准确反映从页面顶部滚动的距离。

实际行为

初始渲染时偏移值为0符合预期,但开始向下滚动后,偏移值时而为负时而为正,无法保持稳定的正数状态。

代码片段

App.jsx

import { Scroll, ScrollControls, useScroll } from '@react-three/drei';
// ... (其他导入)

function App() {
  return (
    <>
      <Header />
      <main className="h-full w-full overflow-hidden pt-[44px]">
        <Canvas gl={{ preserveDrawingBuffer: true }}>
          <ScrollControls pages={5} damping={0.1}>
            // 每个组件占满100vh
            <Hero />
            <About />
            <Feature />
            <Faq />
            <Contact />
          </ScrollControls>
        </Canvas>
      </main>
    </>
  );
}

Scene.jsx

import { useScroll } from '@react-three/drei';
// ... (其他导入)

export default function Scene() {
  const scroll = useScroll();
  // ... (其他代码)

  useFrame(() => {
    if (scroll) {
      // 此处返回负数
      const offset = scroll.offset;
      console.log('Scene Component Scroll Offset:', offset);
      // ... (剩余代码)
    }
  });

  return (
    <>
      {/* ... (其他组件) */}
    </>
  );
}

内容的提问来源于stack exchange,提问作者Youngjun Woo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 14:40:54