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

React 18升级后onScroll回调函数无法触发的问题求助

解决React 18升级后react-virtualized List的onScroll不触发问题

问题根源

你外层的div并没有实际的滚动行为——react-virtualized的List组件内部会自行创建一个带滚动条的容器,所有滚动事件都发生在这个内部容器上,所以监听外层div的onScroll自然不会触发。

解决方案

直接给List组件添加onScroll属性,把你的scrollHandler传递进去即可:

修改后的代码示例

const TableComponent = (props) => {
  // 注意:原代码重复解构了getRow,已移除重复项
  const { scrollHandler, getRow, width, height, rowCount, rowHeight } = props;

  return (
    <div>
      <AutoSizer>
        {({ width, height }) => (
          <List
            width={width}
            height={height}
            rowCount={rowCount}
            rowHeight={rowHeight}
            rowRenderer={getRow}
            columnWidth={150}
            style={{ maxHeight: maxHeight }}
            onScroll={scrollHandler} // 直接给List绑定滚动回调
          />
        )}
      </AutoSizer>
    </div>
  );
};

补充说明

  • 如果你需要获取滚动细节(比如滚动位置、方向),List的onScroll回调会接收包含scrollTop、scrollLeft等属性的参数,可在scrollHandler中直接使用。
  • 给AutoSizer加onScroll无效是因为它只是尺寸自适应包装组件,不负责滚动逻辑;外层div没有滚动条,自然不会触发滚动事件。

内容的提问来源于stack exchange,提问作者Thalariventhan K R

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 06:22:43