IntersectionObserver實現加載更多組件demo

實例 import { useEffect, useRef } from 'react';import { Spin } from 'antd';import type { FsFC } from './types';import './index.less';type LoadMoreProps = { root?: Element | null; // 跟哪個元素重疊不傳默認則是 整個瀏覽器窗

?實例

import { useEffect, useRef } from 'react';
import { Spin } from 'antd';
import type { FsFC } from './types';
import './index.less';
type LoadMoreProps = {
  root?: Element | null; // 跟哪個元素重疊不傳默認則是 整個瀏覽器窗口,一般是父元素
  isLoading: boolean; // 用來判斷如果 沒有在請求列表才回執行
  more: () => void;
};
const LoadMore: FsFC<LoadMoreProps> = ({ root = null, isLoading, more }) => {
  const loadMoreRef = useRef(null);
  /** 建立加載更多觀察者 */
  const loadMoreOb = () => {
    if (!loadMoreRef.current) {
      return;
    }
    const ob = new IntersectionObserver(
      (entries) => {
        const [entry] = entries;
        // 有重疊,并且沒有在請求
        if (entry.isIntersecting && !isLoading) {
          more();
        }
      },
      {
        root,
        threshold: 1,
      },
    );
    ob.observe(loadMoreRef.current);
  };
  useEffect(() => {
    loadMoreOb();
  }, []);
  return (
    <div className="load-more" ref={loadMoreRef}>
      <Spin />
    </div>
  );
};
export default LoadMore;

文中注釋已對代碼進行詳解說明,以上就是IntersectionObserver實現加載更多組件demo的詳細內容,更多關于IntersectionObserver加載組件的資料請關注技圈網其它相關文章!

【文章原創作者:美國服務器 https://www.68idc.cn處的文章,轉載請說明出處】
聲明:所有內容來自互聯網搜索結果,不保證100%準確性,僅供參考。如若本站內容侵犯了原著者的合法權益,可聯系我們進行處理。
發表評論
更多 網友評論0 條評論)
暫無評論

返回頂部

主站蜘蛛池模板: 三级日本高清完整版热播| 午夜性福利视频| 久久无码人妻一区二区三区午夜 | 天天操综合视频| 免费欧洲毛片A级视频无风险| 91精品观看91久久久久久| 欧美成视频在线观看| 国产欧美日韩一区二区三区在线| 久久机热这里只有精品无需| 狠狠色婷婷久久一区二区| 成人午夜精品无码区久久| 午夜成人无码福利免费视频| 一本色道无码道在线观看| 精品一区二区在线观看1080p| 好男人在线社区www在线视频免费| 免费播放春色aⅴ视频| ass美女下部精品图片| 污小说总裁整夜没拔出| 国产精品无码翘臀在线观看| 亚洲午夜久久久影院伊人| 欧美第一页浮力影院| 日韩伦理片电影在线免费观看| 国产亚洲欧美日韩v在线| 中文字幕丰满孑伦| 神乃麻美三点尽露写真| 天堂在线观看视频| 亚洲成a人v欧美综合天堂| 日本一二三精品黑人区| 日本在线视频WWW色影响| 国亚洲欧美日韩精品| 一二三四在线播放免费视频中国| 日韩爽爽爽视频免费播放| 再深点灬舒服灬太大了添学长| 51国产偷自视频区视频| 无码精品黑人一区二区三区| 久久精品.com| 丁香婷婷亚洲六月综合色| 无码国产精品一区二区免费模式 | 国产午夜影视大全免费观看| 中美日韩在线网免费毛片视频| 精品999久久久久久中文字幕|