index.tsx 820 B

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