如何在 React 中监听 div 的滚动事件

在 React 中监听 div 的滚动事件(scroll),可以通过为该 div 添加 onScroll 属性来实现。以下是一个基本的例子:


✅ 示例:监听 div 的滚动事件

jsx 复制代码
import React, { useRef } from 'react';

function ScrollComponent() {
  const handleScroll = (event) => {
    const scrollTop = event.target.scrollTop;
    const scrollHeight = event.target.scrollHeight;
    const clientHeight = event.target.clientHeight;

    console.log('滚动位置:', scrollTop);
    console.log('可滚动高度:', scrollHeight - clientHeight);
  };

  return (
    <div
      onScroll={handleScroll}
      style={{
        height: '200px',
        overflowY: 'scroll',
        border: '1px solid #ccc',
        padding: '10px',
      }}
    >
      {/* 内容可以足够长以产生滚动 */}
      <div style={{ height: '600px' }}>
        滚动我吧~
      </div>
    </div>
  );
}

export default ScrollComponent;

📌 注意事项

  1. onScroll 只能监听滚动的容器 ,确保容器有 overflow: scrolloverflow: auto

  2. windowscroll 事件需要用 window.addEventListener 绑定:

    jsx 复制代码
    useEffect(() => {
      const handleScroll = () => {
        console.log('window scroll:', window.scrollY);
      };
      window.addEventListener('scroll', handleScroll);
    
      return () => {
        window.removeEventListener('scroll', handleScroll);
      };
    }, []);

通过监听 div 的滚动事件可以实现具体需求,比如滚动到底部、懒加载、吸顶等。

相关推荐
小蜜蜂dry1 天前
nestjs实战-权限二:角色模块
前端·后端·nestjs
AskHarries1 天前
权限模型:Shell、Browser、文件读写的安全边界
服务器·前端·网络
小蜜蜂dry1 天前
nestjs实战-权限一: 菜单模块
前端·后端·nestjs
用户5812441541571 天前
GemDesign MCP协议详解:从原型到代码的完整技术链路
前端
半个烧饼不加肉1 天前
JS 底层探究-- 事件循环
开发语言·前端·javascript
goDeep1 天前
useMemo 和 useCallback 的区别,我终于搞懂了
前端
小亮学前端1 天前
在1Panel中部署Nuxt项目
前端·vue.js
产品研究员1 天前
AI生成可用的React交互代码实测:Lovable vs Stitch vs Paico
前端·react.js·aigc
labixiong1 天前
Prompt 工程:当一段文字学会了思考、行动与统治
前端·ai编程
biubiubiu_LYQ1 天前
入门开发者必学篇之JS事件循环:为什么你的代码输出总翻车?
前端·javascript