IntersectionObserver实现上拉加载

IntersectionObserver实现上拉加载

一、前言

最近写的比较多的移动端页面开发,分页加载比较多,于是对其进行了一些研究,找到了一个比较方便的方法。其中关键为IntersectionObserver这一对象。没用过的兄弟可以点链接

二、实现

import React, { useEffect, useState, useRef } from "react";

const [curPage, setCurPage] = useState(1);
const loadingRef = useRef(null);///.....


useEffect(() => {
        const io = new IntersectionObserver((entries) => {
            if (entries[0]["isIntersecting"]) {
                setCurPage((page) => {
                    if (page < totalPage) {
                        return page + 1;
                    } else {
                        return page;
                    }
                });
            }
        });
        io.observe(loadingRef.current);
        return () => io.disconnect();
    }, [totalPage]);


<div className={styles.attendanceList}>
                    {approveList.map((v, i) => {
                        return (
                            <div className={styles.detailAtt} key={i}>{...}</div>
                        );
                    })}
                    <div ref={loadingRef} style={{ height: '1px', backgroundColor: '#F5F7F8' }}></div>
                </div>
大概实现方式如上代码,通过检测ref来更新当前页curPage来进行发起新的请求获取下一页,这比scroll也更加方便。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值