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;

本文参加了 SegmentFault 思否写作挑战「摸索编码世界之旅 - 记我的第一份编程工作」,欢送正在浏览的你也退出。