KAEDE Hack blog

JavaScript 中心に ライブラリなどの使い方を解説する技術ブログ。

もう一回 Next.js

set up

nextjs.org

npx create-next-app next-2020 --use-npm --example "https://github.com/vercel/next-learn-starter/tree/master/learn-starter"
  • 2020年最後のってことで作る

404 This page could not be found.

は????

3001 を開けた

first-post

pages/first-post.js

export default function FirstPost() {
  return <h1>First Post</h1>
}

http://localhost:3001/first-post

で動作を確認した

link

import Link from 'next/link'

export default function FirstPost() {
  return (
    <>
      <h1>First Post</h1>
      <h2>
        <Link href="/">
          <a>Back to home</a>
        </Link>
      </h2>
    </>
  )
}
  • 中身に Link a を入れる

head

      <Head>
        <title>First Post</title>
      </Head>

これを追加

Layout

  • components/layout.js を作成
export default function Layout({ children }) {
  return <div>{children}</div>
}

first-post で使用する

import Layout from '../../components/layout'

    <Layout>
      <Head>
        <title>First Post</title>
      </Head>
      <h1>First Post</h1>
      <h2>
        <Link href="/">
          <a>Back to home</a>
        </Link>
      </h2>
    </Layout>

head も h1 h2 も Layout で wrap する

layout module css

  • components/layout.module.css を作成
.container {
  max-width: 36rem;
  padding: 0 1rem;
  margin: 3rem auto 6rem;
}
  • モジュールの CSS を作成する
import styles from './layout.module.css'
  • layout.js styles として使用する

_app.js

  • 共通ファイル
  • pages/_app.js
export default function App({ Component, pageProps }) {
  return <Component {...pageProps} />
}
  • Component に pageProps を渡していく
  • 意味不明
import '../styles/global.css'

これを書くことで

styles/global.css が全体に反映される

posts

  • posts/[id].js
  • ここに全てを書く
  • ここで getStaticPaths を使うようになる