index.tsx 811 B

12345678910111213141516171819202122232425262728293031323334353637
  1. import useGet from "../utils/hooks/useGet";
  2. import type { ListItem } from "../types/http";
  3. import NovelItem from "../components/NovelItem";
  4. const Home = () => {
  5. const { data } = useGet<ListItem[]>("/api/list");
  6. return (
  7. <main className="container">
  8. <h2 className="novel-title">Popular This Week</h2>
  9. <ul className="novel-list">
  10. {(data?.data || []).map((item) => (
  11. <NovelItem
  12. key={item.uri}
  13. slug={item.uri}
  14. img={item.img}
  15. name={item.name}
  16. />
  17. ))}
  18. </ul>
  19. </main>
  20. );
  21. };
  22. export async function getServerSideProps() {
  23. const data = await fetch(`/api/list`).then((res) => res.json());
  24. return {
  25. props: {
  26. fallback: {
  27. "/api/list": data,
  28. },
  29. },
  30. };
  31. }
  32. export default Home;