かつては自前でmicroCMSとNext.jsを組み合わせていましたが、SDKができたとのことだったので、つかってみました。
Nuxt.js用のSDK、GatsbyJS用のSDKとフレームワーク専用で用意されているものもありますが、Next.jsは専用のものが無いので、Javascript(Node.js)用のSDKを使います。
ただ、Next.jsとの連携方法はこちらにまとまっており、基本的にはこちらをそのまま進めていけば連携自体は楽々です。
で、この通り進めると、getStaticPropsの部分は、
export const getStaticProps = async () => { const data = await client.get({ endpoint: 'hello', }); return { props: { data, }, }; };
となるのですが、このままだと最大10件までしかコンテンツを取得できません。
なぜならば、limitのデフォルトが10になっているからです。
クエリでlimitを変更すれば良い話なのですが、クエリの渡し方を調べてもパッと出てこなかったので、型定義ファイルを読んで解決しました。
export interface GetRequest { endpoint: string; contentId?: string; queries?: MicroCMSQueries; }
export interface MicroCMSQueries { draftKey?: string; limit?: number; offset?: number; orders?: string; fields?: string | string[]; q?: string; depth?: depthNumber; ids?: string | string[]; filters?: string; }
https://github.com/microcmsio/microcms-js-sdk/blob/main/src/types.ts より引用
となっているので、
export const getStaticProps = async () => { const data = await client.get({ endpoint: 'hello', queries: { limit: 99 // 追加 } }); return { props: { data, }, }; };
とか書けば、99件返ってくるようになります。
クエリの書き方はこちらにまとまっているので、フィルターをかけたり、ソートしたりし放題です。
いままでも充分簡単に導入できたのですがSDKの登場により、より手軽に導入できるようになって嬉しい限り。
早速、Next.jsで作成しているサイトに導入してみました。