質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Next.js

Next.jsは、Reactを用いたサーバサイドレンダリングなどを行う軽量なフレームワークです。Zeit社が開発しており、nextコマンドでプロジェクトを作成することにより、開発環境整備が整った環境が即時に作成できます。

MicroCMS

MicroCMSとは、APIベースのヘッドレスCMSです。日本製のため、デフォルトで日本語に対応しており、サポートも豊富。管理画面でも作成したコンテンツなどが見やすくシンプルで、APIの管理がしやすい点も特徴です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

721閲覧

Next.jsのgetStaticPropsを使用して関数コンポーネントにpropsを渡したい

yasaDamp

総合スコア1

Next.js

Next.jsは、Reactを用いたサーバサイドレンダリングなどを行う軽量なフレームワークです。Zeit社が開発しており、nextコマンドでプロジェクトを作成することにより、開発環境整備が整った環境が即時に作成できます。

MicroCMS

MicroCMSとは、APIベースのヘッドレスCMSです。日本製のため、デフォルトで日本語に対応しており、サポートも豊富。管理画面でも作成したコンテンツなどが見やすくシンプルで、APIの管理がしやすい点も特徴です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2023/06/05 10:21

実現したいこと

  • 関数コンポーネントにgetStaticProps()からpropsを渡す

前提

Next.js13の勉強中で、ブログサイトを作成しています。
microCMSからブログ記事のデータをgetStaticPropsで取得して関数コンポーネントに渡すコードを書いたのですがpropsがundefineとなってしまいます。
値の取得はapi.js内のgetPostBySlug(slug)を使って行っています。

発生している問題・エラーメッセージ

エラーメッセージ - error app\blog\schedule\page.js (8:16) @ title - error TypeError: Cannot read properties of undefined (reading 'title') at Schedule (./app/blog/schedule/page.js:18:28) at stringify (<anonymous>) digest: "3697126974" 6 | return( 7 | <Container> > 8 | <h1>{blog.title}</h1> | ^ 9 | </Container> 10 | ) 11 | }

該当のソースコード

JavaScript page.js

1import { getPostBySlug } from "lib/api"; 2import Container from "components/container"; 3 4export default function Schedule({ blog }){ 5 return( 6 <Container> 7 <h1>{blog.title}</h1> 8 </Container> 9 ) 10} 11 12export async function getStaticProps(){ 13 const slug = 'schedule' 14 15 const post = await getPostBySlug(slug) 16 17 return { 18 props: { 19 blog: post 20 }, 21 } 22}

JavaScript api.js

1import { createClient } from 'microcms-js-sdk' 2 3export const client = createClient({ 4 serviceDomain: process.env.SERVICE_DOMAIN, 5 apiKey: process.env.API_KEY, 6}) 7 8export async function getPostBySlug(slug) { 9 try { 10 const post = await client.get({ 11 endpoint: 'blogs', 12 queries: { filters: `slug[equals]${slug}` } 13 }).then((res) => console.log(res)); 14 return post 15 } catch (error) { 16 console.log('~~getPostBySlug~~') 17 console.log(error) 18 return null 19 } 20}

試したこと

書籍や公式ドキュメントのコードを見たり、propsをblog: post.contents[0]に書き換えたりしましたがうまく値を渡せませんでした。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

Next.js13ではappディレクトリ内でgetStaticPropsが使えなくなったようです。
コンポーネント内で直接データを取得したらエラーが消えました。

投稿2023/06/06 05:45

yasaDamp

総合スコア1

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問