2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Next.jsの_app.tsxをTypeScriptで書く

Last updated at Posted at 2021-08-25

このページではNext.jsの_app.tsxをTypeScriptで書くことを目的にします。
基本的にconstのあとの型は基本的にどのファイルでもReact.FCの型を使います。
Reactで必ず書く「import React from 'react'」 の記述は2021.8/25時点ではNext.jsでは必要なく省略できます。

  • AppPropsの型(_app.tsxのみ)
  • JSX.Elementの型(明示的に指定するのは_app.tsxのみ)
  • React.FCの型(すべての.tsxに必要)

参考
*Next.jsでTypeScriptを導入する手順
*_app.tsx内のMyAppの型定義でエラーが出る

_app.tsx
import {AppProps} from 'next/app'
import Layout from '../components/layout'
import '../styles/globals.css'

const MyApp: React.FC<AppProps> = ({ Component, pageProps }): JSX.Element => {
  return (
    <Layout>
      <Component {...pageProps} />
    </Layout>
  );
}
export default MyApp;

Layout.tsxの中にHeader, Metatext当の全てのパーツを内包し、
このpageProps部分をLayoutタグで囲んであげることで全てのページにLayoutタグを記述する必要がなくなります。
またLayoutをネストする場合getLayout関数を使うことによって実装できます。

SSGを使うに当たって.
静的,静かなというコンセプトを崩してはいけないのかと思います。

10月29日追記
React.FCはchildrenにReactNodeを渡したくない場合VFCを使うといいみたいです。
使われなくなってきてるとはいえ型推論させないで明示的に定義した方がコンパイルが速いみたいなので現在はそうしています。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?