import { NextPage, NextPageContext } from 'next' import dynamic from 'next/dynamic' import { ParsedUrlQuery } from 'querystring' import { BotList } from '@types' import * as Query from '@utils/Query' import NotFound from '../404' import { PageCount } from '@utils/Yup' import { useRouter } from 'next/router' const Advertisement = dynamic(()=> import('@components/Advertisement')) const BotCard = dynamic(()=> import('@components/BotCard')) const Container = dynamic(()=> import('@components/Container')) const Paginator = dynamic(()=> import('@components/Paginator')) const Votes:NextPage = ({ data }) => { const router = useRouter() if(!data || data.data.length === 0 || data.totalPage < Number(router.query.page)) return return

하트 랭킹 - {data.currentPage}페이지

하트를 많이 받은 봇들의 순위입니다!

{ data.data.map(bot => ) }
} export const getServerSideProps = async (ctx:Context) => { let data: BotList console.log(ctx.query.page) if(!ctx.query.page) ctx.query.page = '1' const validate = await PageCount.validate(ctx.query.page).then(el => el).catch(() => null) console.log(validate) if(!validate || isNaN(Number(ctx.query.page))) data = null else data = await Query.get.list.votes.load(Number(ctx.query.page)) return { props: { data } } } interface VotesProps { data: BotList } interface Context extends NextPageContext { query: URLQuery } interface URLQuery extends ParsedUrlQuery { page: string } export default Votes