关于FlatList实现上拉加载更多的求助~



  • 想做一个上拉加载更多的功能,flatlist提供了下拉刷新,能不能看看这个下拉刷新的源码,他本身提供的onReachEnd函数感觉不好用啊,设置onEndReachedThreshold后,满足条件时,总会多次去运行onReachEnd这个函数,没有onRefresh(下拉刷新)那么流畅。求助,已经被这个上拉加载更多困扰了很久了~


  • 设置请求标志变量试试

    constructor() {
      this.isLoadingMore = false;
    }
    
    loadMore() {
      if (this.isLoadingMore) {
        return;
      }
      this.isLoadingMore = true;
    
      fetch('https://www.baidu.com').then((res)=>{
        this.isLoadingMore = false;
      }).catch((e) => {
        this.isLoadingMore = false;
      })
    }
    
    render() {
      return (
        ...
        onReachEnd={() => this.loadMore()}
        ...
      );
    }
    


  • 此回复已被删除!


  • @HermitCarb 确实可以唉,解决了多次触发onReachEnd函数的情况,非常感谢,但这个this.loadingMore是不是一开始应该设置为true,然后触发后直接变为false,当数据数据请求成功后再设置为true。



  • 正常情况下,会有下面两个标志:
    isRefreshing:是否正在刷新(如下拉刷新)。请求来的数据会覆盖之前的数据。
    isLoadingMore:是否正在加载更多(如上滑到底部)。加载跟过出来的数据,是会追加在之前的数据后面的。
    这两个标志同一时间有切只能有一个激活。

    初始值为false(对应请求发送前,置为false),更能贴合标志变量的字面意思。



  • @HermitCarb 好的,了解了,多谢答疑解惑~


登录后回复