kagome.dev

ページネーションの設定

2024年2月11日 日曜日

---

import Layout from "@layouts/Layout.astro";
import { getBlogs } from "@library/microcms";
import type { GetStaticPathsOptions } from 'astro';

export const getStaticPaths = async ({ paginate }: GetStaticPathsOptions) => {
  const blogs = await getBlogs({ limit: 100 });  // 100ページまでしか指定できない
  return paginate(blogs.contents, { pageSize: 3 });  // 1ページ毎の記事数
};
const { page } = Astro.props;

---

<Layout title="ページネーション">
  <h1>{Astro.params.page}ページ目</h1>
  <ul>
    {page.data.map((blog) => {
      return (
      <li><a href={blog.id}>{blog.title}</a></li>);
    })}
  </ul>

  <nav>
    <p>page {page.currentPage}/{page.lastPage} </p>

    <!-- URLが存在しない場合はundifinedが返される -->
    <a href={page.url.prev}>前へ</a>  
    <a href={page.url.next}>次へ</a>
  </nav>
</Layout>

[page].astro[…page].astroにして、ルートディレクトリを1ページ目にする。

参考記事:

AstroとmicroCMSで作ったサイトにページネーションを実装する