如何在 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 的滚动事件可以实现具体需求,比如滚动到底部、懒加载、吸顶等。

相关推荐
golang学习记1 分钟前
从0死磕全栈之使用 VS Code 调试 Next.js 应用完整指南
前端
Mintopia3 分钟前
🧩 隐私计算技术在 Web AIGC 数据处理中的应用实践
前端·javascript·aigc
尘世中一位迷途小书童5 分钟前
代码质量保障:ESLint + Prettier + Stylelint 三剑客完美配置
前端·架构
Mintopia6 分钟前
🧭 Next.js 架构与运维:当现代前端拥有了“分布式的灵魂”
前端·javascript·全栈
尘世中一位迷途小书童16 分钟前
从零搭建:pnpm + Turborepo 项目架构实战(含完整代码)
前端·架构
JarvanMo25 分钟前
Flutter 中的 ClipRRect | 每日 Flutter 组件
前端
某柚啊26 分钟前
iOS移动端H5键盘弹出时页面布局异常和滚动解决方案
前端·javascript·css·ios·html5
心.c27 分钟前
如何学习Lodash源码?
前端·javascript·学习
JamSlade33 分钟前
react 无限画布难点和实现
前端·react.js
Cxiaomu39 分钟前
React Native 项目中 WebSocket 的完整实现方案
websocket·react native·react.js