RN使用FlatList实现上拉加载更多的代码

js 复制代码
import React, { useState, useEffect } from 'react';
import { FlatList, View, Text, ActivityIndicator, StyleSheet } from 'react-native';

const MyComponent = () => {
  const [data, setData] = useState([]);
  const [loading, setLoading] = useState(false);
  const [page, setPage] = useState(1);

  const fetchData = () => {
    setLoading(true);
    // 模拟从API获取数据
    setTimeout(() => {
      const newData = Array.from({ length: 10 }, (_, index) => ({ id: index + 1, text: `Item ${index + 1}` }));
      setData([...data, ...newData]);
      setLoading(false);
    }, 1000);
  };

  const handleLoadMore = () => {
    if (!loading) {
      setPage(page + 1);
      fetchData();
    }
  };

  useEffect(() => {
    fetchData();
  }, []);

  const renderFooter = () => {
    return loading ? (
      <View style={styles.footer}>
        <ActivityIndicator size="large" color="blue" />
      </View>
    ) : null;
  };

  return (
    <FlatList
      data={data}
      renderItem={({ item }) => (
        <View style={styles.item}>
          <Text>{item.text}</Text>
        </View>
      )}
      keyExtractor={(item) => item.id.toString()}
      onEndReached={handleLoadMore}
      onEndReachedThreshold={0.1}
      ListFooterComponent={renderFooter}
    />
  );
};

const styles = StyleSheet.create({
  item: {
    padding: 20,
    borderBottomWidth: 1,
    borderBottomColor: '#ccc',
  },
  footer: {
    alignItems: 'center',
    justifyContent: 'center',
    paddingVertical: 20,
  },
});

export default MyComponent;
相关推荐
黑土豆2 分钟前
2025,我不再写代码,我在当代码的“审核员”
前端·vue.js·ai编程
不爱说话郭德纲8 分钟前
🏆2025,我对「Vibe Coding」的「影响」
前端·程序员·ai编程
mCell20 分钟前
Electron 瘦身记:我是如何把安装后 900MB 的"巨无霸"砍到 466MB 的?
前端·性能优化·electron
xiaohe06011 小时前
📖 每一份收获都值得被纪念:小何的 2025 年度总结
前端·年终总结
社恐的下水道蟑螂1 小时前
深入理解 React 中的 Props:组件通信的桥梁
前端·javascript·react.js
青莲8431 小时前
Java基础篇——第三部
java·前端
社恐的下水道蟑螂1 小时前
LangChain:AI 应用开发框架的深度解析与实践指南
前端·langchain·ai编程
凌览1 小时前
2025年,我和AI合伙开发了四款小工具
前端·javascript·后端
青莲8431 小时前
Java基础篇——第一部
android·前端
留简1 小时前
从零搭建一个现代化后台管理系统:基于 React 19 + Vite + Ant Design Pro 的最佳实践
前端·react.js