欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

react 列表滚动触发回调

程序员文章站 2023-12-30 19:33:04
...
//* 函数组件的 js 部分
  
// 目标节点:ref={r => { targetRef.current = r }}
  const targetRef = useRef(null);
  // 触底允许的偏移值
  const touchOffset = 100;
  // 是否已经触发触底回调:touchedCallBack
  const [isTCB, setIsTCB] = useState(false);
  
// 滑动事件:onScrollCapture={onScrollCapture}
  const onScrollCapture = () => {
    const { scrollTop, clientHeight, scrollHeight } = targetRef.current;
    // 是否已触底(含偏移)
    const isTouched = (touchOffset + scrollTop + clientHeight) >= scrollHeight;
    // 达到了触底的范围 && 并且没有触发过触底回调
    if (isTouched && !isTCB) {
      onTouchBottom(); // 需要在触底时触发的回调函数 
      setIsTCB(true);
    }
    // 处于未触底的范围 && 已经触发过触底回调
    else if (!isTouched && isTCB) {
      setIsTCB(false);
    }
  };
  //* 标签部分(div 属性设置)
  <div ref={targetRef} onScrollCapture={onScrollCapture}></div>

上一篇:

下一篇: