import React, { useEffect, useState } from 'react'; import { Avatar, List, message } from 'antd'; import VirtualList from 'rc-virtual-list'; interface UserItem { email: string; gender: string; name: { first: string; last: string; title: string; }; nat: string; picture: { large: string; medium: string; thumbnail: string; }; } const fakeDataUrl = 'https://randomuser.me/api/?results=20&inc=name,gender,email,nat,picture&noinfo'; const ContainerHeight = 400; const App: React.FC = () => { const [data, setData] = useState([]); const appendData = () => { fetch(fakeDataUrl) .then((res) => res.json()) .then((body) => { setData(data.concat(body.results)); message.success(`${body.results.length} more items loaded!`); }); }; useEffect(() => { appendData(); }, []); const onScroll = (e: React.UIEvent) => { if (e.currentTarget.scrollHeight - e.currentTarget.scrollTop === ContainerHeight) { appendData(); } }; return ( {(item: UserItem) => ( } title={{item.name.last}} description={item.email} />
Content
)}
); }; export default App;