はじめに
今回は”Using Shared Components”を進めていきたいと思います。
ヘッダコンポーネントを作成する
公式ではサンプルコードをダウンロードして進めていますが、より実感がわくように前回の続きを使っていきたいと思います。
まずはコマンドプロンプトでもエクスプローラーでもいいので、componentsフォルダ内にHeader.jsを作成しましょう。

そうした後、Header.jsの中身を書き換えていきます。
import Link from 'next/link'
const linkStyle = {
marginRight: 15
}
const Header = () => (
<div>
<Link href="/">
<a style={linkStyle}>Home</a>
</Link>
<Link href="/about">
<a style={linkStyle}>About</a>
</Link>
</div>
)
export default Header
ヘッダコンポーネントの使い方
このコンポーネントをインポートしてページで使用します。
pagesフォルダのindex.jsを書き換えましょう。
import Header from '../components/Header'
export default () => (
<div>
<Header />
<p>Hello Next.js</p>
</div>
)これでローカルホストをみると、

無事ヘッダーコンポーネントを適応できました!
レイアウトコンポーネント
さまざまなページで共通のスタイルを使用するには、レイアウトコンポーネントを使用します。
componentsフォルダにMyLayout.jsを作成し、以下のコードを書きましょう。
import Header from './Header'
const layoutStyle = {
margin: 20,
padding: 20,
border: '1px solid #DDD'
}
const Layout = (props) => (
<div style={layoutStyle}>
<Header />
{props.children}
</div>
)
export default Layoutこれを適応するindex.jsとabout.jsの中身を作っていきたいと思います。
まずpagesフォルダ内にindex.jsのようにabout.jsを作成し、中身を以下のコードに書き換えていきましょう。
// pages/index.js
import Layout from '../components/MyLayout.js'
export default () => (
<Layout>
<p>Hello Next.js</p>
</Layout>
)
<||
>||
// pages/about.js
import Layout from '../components/MyLayout.js'
export default () => (
<Layout>
<p>This is the about page</p>
</Layout>
)そして、いつもどうりにローカルホストを見てみましょう。


これで共有コンポーネントもOKです!