Components
Pages
- Add some more content and styles to the page. - src\pages\index.jsimport React from "react";export default function Home() {return (<div><h1>Home</h1><img src="https://source.unsplash.com/random/400x200" alt="" /></div>);}
- Create another page. - src\pages\about.jsimport React from "react";export default function About() {return (<div><h1>About</h1><p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Doloremquam mollitia ut, odit suscipit velit molestias, ratione vel minusiure esse! Nam autem vitae distinctio minima facere. Consectetur,error molestiae.</p></div>);}- TIP: Install the extension ES7, React, JS, Snippets. Then use these code snippets to make this quicker: - rfc(generates a React functional component)
- lorem(generates lorem ipsum text to fill out the page)- Note this snippet is built into VS Code
 
 
Components
Layout Component
- Create a - componentsdirectory under- src.
- Create a layout component for shared layout. - src\components\layout.jsimport React from "react";export default function Layout({ children }) {return <div>{children}</div>;}
- Add it to both pages. - You will see no visual changes at this point. - src\pages\index.jsimport React from "react"+ import Layout from "../components/layout"export default function Home() {return (- <>+ <Layout><h1>Home</h1><img src="https://source.unsplash.com/600x300/?house" alt="house" />+ </Layout>- </>)}- src\pages\about.jsimport React from "react"import Layout from "../components/layout"export default function About() {return (+ <Layout><h1>About</h1><p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Dolorem quammollitia ut, odit suscipit velit molestias, ratione vel minus iure esse!Nam autem vitae distinctio minima facere. Consectetur, error molestiae.</p>+ </Layout>)}
Subcomponents
- Create a reusable header component - src\components\header.js- You will need to create the components directory. import React from "react";export default function Header() {return (<header><nav>Home | About</nav></header>);}
- Add a reusable footer component. - src\components\footer.jsimport React from "react";export default function Footer() {return (<footer><nav><a href="#">Privacy</a><a href="#">Terms</a><a href="#">Careers</a><span> © Acme Inc.</span></nav></footer>);}
- Add both of these to the layout component. - src\components\layout.jsimport React from "react"+ import Footer from "./footer"+ import Header from "./header"export default function Layout({ children }) {return (<div>+ <Header />{children}+ <Footer /></div>)}
- Surround both - index.jsand- about.jspages with the- Layoutcomponent (- layout.js).
Navigation
- Update the header to link to the pages you previously created. Use the - Linkcomponent built-in to Gatsby.- src\components\header.js+ import { Link } from "gatsby"import React from "react"export default function Header() {return (<header><nav>- Home | About+ <Link to="/">Home</Link> |<Link to="/about">About</Link></nav></header>)}