index.tsx 843 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. import NovelItem from "../components/NovelItem";
  2. import type { ListItem } from "../types/http";
  3. import useGet from "../utils/hooks/useGet";
  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(`https://novels.yergoo.com/api/list`).then((res) =>
  24. res.json()
  25. );
  26. return {
  27. props: {
  28. fallback: {
  29. "/api/list": data,
  30. },
  31. },
  32. };
  33. }
  34. export default Home;