上拉加载更多

这里用到了 IntersectionObserver, 关于这个论述阮一峰老师有专门写到。我这里就参照这个理论做了个工具 为了兼容性我引入了npm install intersection-observer; 然后在入口文件import 'intersection-observer'; 然后就可以开始写工具了 useObserve.tsx
export default (ref: React.RefObject<any>, visibleCall, hiddenCall) => { const intersectionObserver = new IntersectionObserver((entries) => { if (entries[0].intersectionRatio <= 0) { hiddenCall(); } else { visibleCall(); } }); if (ref.current) { intersectionObserver.observe(ref.current); } };
第一个参数传入要监控的对象
第二个参数传入一个监控对象进入显示区域后的回调函数
第三个参数传入一个监控对象超出显示区域后的回调函数

然后怎么使用呢?
在要用的页面 import IntersectionObserver from '...';
在页面上定义一个div作为监控对象像下面这个样子
public render(){ return( ...列表 <div ref={this.ref}>加载更多</div> ) }
我是用的react,在生命周期 componentDidMount 监控一下。
public componentDidMount() { useObserver(this.ref, this.loadMore, this.hidden); } private loadMore = () => { console.log('visible'); } private hidden = () => { console.log('hidden'); }
这样就可以了

转载于:https://juejin.im/post/5c94690b5188252d812c51ae

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值