import React, { useState } from 'react' import { DataTable } from 'react-icecream' import originalRecords from './shared-records' export default function Demo() { const { records, loading, currentPage, pageSize, total, setPageInfo } = useData() return ( idx + 1} /> ) } function useData() { const [{ currentPage, pageSize }, setPageInfo] = useState({ pageSize: 10, currentPage: 0 }) const [loading, setLoading] = useState(false) async function handleSetPageInfo(nextCurrentPage: number, nextPageSize: number) { setLoading(true) await new Promise(r => setTimeout(r, 1000)) setLoading(false) setPageInfo({ pageSize: nextPageSize, currentPage: nextCurrentPage }) } return { records: originalRecords.slice(currentPage * pageSize, (currentPage + 1) * pageSize), currentPage, pageSize, setPageInfo: handleSetPageInfo, total: originalRecords.length, loading } }