【Next.js】fetchAPIでJSONデータにアクセスする

自分用のメモ

環境の準備

実行環境

  • VS code:v1.62.3
  • Node.js:v14.17.3
  • React:v17.0.2

プロジェクトの作成

Next Create Appで作成します。

ソースの作成

JSONデータの用意(publicフォルダ配下に配置)

{
  "message" : "This is sample JSON data.",
  "data": [
    {"name":"taro", "mail":"taro@yamada", "age":39},
    {"name":"hanako", "mail":"hanako@yamada", "age":28},
    {"name":"sachiko", "mail":"sachiko@yamada", "age":17}
  ]
}

初期ページの作成

  • 7行目でfetchした「res」を8行目で「res.json()」してJSON形式の文字列に変換します。
  • 8行目の戻り値「jsonData」を9行目でStateに保存します。
import {useState} from 'react'
import Layout from './components/layout'

const Home = () => {
  const url = './data.json'
  const [payload, setPayload] = useState({message:'', data:[]})
  fetch(url)
    .then(res => res.json())
    .then(jsonData => setPayload(jsonData))
  return (
    <div>
      <Layout title='Top page.'>
        <div className='alert alert-primary text-center'>
          <h5 className='mb-4'>{payload.message}</h5>
          <table className='table bg-white'>
            <thead className='table-dark'>
              <tr><th>Name</th><th>Mail</th><th>Age</th></tr>
            </thead>
            <tbody>
              {payload.data.map((value, key) => 
                <tr key={key}>
                  <th>{value.name}</th>
                  <th>{value.mail}</th>
                  <th>{value.age}</th>
                </tr>
              )}
            </tbody>
          </table>
        </div>
      </Layout>
    </div>
  )
}

export default Home

レイアウトの作成

  • Layoutコンポーネントについては、こちらの記事を参考にしてください。

あとがき

特になし

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です