import React, { useEffect, useState } from 'react'; import { Avatar, Button, List, Skeleton } from 'antd'; interface DataType { gender?: string; name: { title?: string; first?: string; last?: string; }; email?: string; picture: { large?: string; medium?: string; thumbnail?: string; }; nat?: string; loading: boolean; } const count = 3; const fakeDataUrl = `https://randomuser.me/api/?results=${count}&inc=name,gender,email,nat,picture&noinfo`; const App: React.FC = () => { const [initLoading, setInitLoading] = useState(true); const [loading, setLoading] = useState(false); const [data, setData] = useState([]); const [list, setList] = useState([]); useEffect(() => { fetch(fakeDataUrl) .then((res) => res.json()) .then((res) => { setInitLoading(false); setData(res.results); setList(res.results); }); }, []); const onLoadMore = () => { setLoading(true); setList( data.concat([...new Array(count)].map(() => ({ loading: true, name: {}, picture: {} }))), ); fetch(fakeDataUrl) .then((res) => res.json()) .then((res) => { const newData = data.concat(res.results); setData(newData); setList(newData); setLoading(false); // Resetting window's offsetTop so as to display react-virtualized demo underfloor. // In real scene, you can using public method of react-virtualized: // https://stackoverflow.com/questions/46700726/how-to-use-public-method-updateposition-of-react-virtualized window.dispatchEvent(new Event('resize')); }); }; const loadMore = !initLoading && !loading ? (
) : null; return ( ( edit, more]} > } title={{item.name?.last}} description="Ant Design, a design language for background applications, is refined by Ant UED Team" />
content
)} /> ); }; export default App;