Next.jsではじめる
パッケージをインストールする
まず、アプリケーションを作成します。
ターミナルで次のコマンドのいずれかを実行します。
pnpm create next-app my-app --typescript
Yamada UIは、@yamada-ui/react
をインストールするだけで、ほとんどのコンポーネントやフックを使用できます。
pnpm add @yamada-ui/react
テーブル・カレンダー・カルーセルなど使用する場合は、別途インストールをする必要があります。
pnpm add @yamada-ui/table
パッケージ | 説明 | |
---|---|---|
@yamada-ui/table | @tanstack/react-tableを使用した、便利なテーブルコンポーネントを提供します。 | |
@yamada-ui/calendar | dayjsを使用した、便利なカレンダーとデイトピッカーコンポーネントを提供します。 | |
@yamada-ui/carousel | embla-carousel-reactを使用した、便利なカルーセルコンポーネントを提供します。 | |
@yamada-ui/dropzone | react-dropzoneを使用した、便利なドロップゾーンコンポーネントを提供します。 | |
@yamada-ui/charts | rechartsを使用した、便利なチャートコンポーネントを提供します。 | |
@yamada-ui/markdown | react-markdownとreact-syntax-highlighterを使用した、便利なマークダウンコンポーネントを提供します。 | |
@yamada-ui/fontawesome | Font Awesomeを便利に使用するためのコンポーネントを提供します。 |
UIProvider
を追加する
Yamada UIをインストール後、UIProvider
を追加します。
_app.tsx
import type { AppProps } from "next/app"import { UIProvider } from "@yamada-ui/react"export default function App({ Component, pageProps }: AppProps) {return (<UIProvider><Component {...pageProps} /></UIProvider>)}
デフォルトのテーマは、UIProvider
のなかに含まれています。
テーマやコンフィグをカスタマイズしたい場合は、テーマをカスタマイズするとコンフィグをカスタマイズするをご覧ください。
ColorModeScript
を追加する
カラーモードを正常に動作させるために、body
内にColorModeScript
を追加する必要があります。
理由は、カラーモードがlocalStorage
やcookies
を用いて実装されており、ページの読み込み時に同期を正しく機能させるためです。
_document.tsx
import { Html, Head, Main, NextScript } from "next/document"import { ColorModeScript, defaultConfig } from "@yamada-ui/react"export default function Document() {return (<Html lang="en"><Head /><body><ColorModeScript initialColorMode={defaultConfig.initialColorMode} /><Main /><NextScript /></body></Html>)}
props
のinitialColorMode
は、コンフィグと同じinitialColorMode
を渡してください。もし、あなたのコンフィグがある場合は、そちらのinitialColorMode
を渡してください。
colorModeManager
を追加する
Next.jsなどのサーバー側でレンダリングされるサイトの場合は、カラーモードがハイドレーション中に変更することを避けるために、リクエストにカラーモードを含めたい場合があります。
サーバーサイドレンダリングを使用しない場合は、こちら手順をする必要はありません。Yamada UIは、デフォルトでlocalStorage
を使用しています。
getServerSideProps
を用意する
複数のページでgetServerSideProps
を共通化するために、getServerSideCommonProps
を定義します。
import { GetServerSidePropsContext } from "next"export const getServerSideCommonProps = ({req,}: GetServerSidePropsContext) => {return {props: {cookies: req.headers.cookie ?? "",},}}
colorModeManager
にcookies
を設定する
createColorModeManager
にssr
とcookies
を設定します。
_app.tsx
import type { AppProps } from "next/app"import { UIProvider, createColorModeManager } from "@yamada-ui/react"export default function App({ Component, pageProps }: AppProps) {const { cookies } = pagePropsconst colorModeManager = createColorModeManager("ssr", cookies)return (<UIProvider colorModeManager={colorModeManager}><Component {...pageProps} /></UIProvider>)}
getServerSideProps
を追加する
先ほど作成したgetServerSideCommonProps
を各ページに追加します。
index.tsx
import { getServerSideCommonProps } from "../get-server-side-props.ts"import { Button } from "@yamada-ui/react"export default function Index() {return <Button>Click me!</Button>}export const getServerSideProps = getServerSideCommonProps
コンポーネントを使用する
UIProvider
を追加したら、アプリケーション内でコンポーネントを呼び出します。
index.tsx
import { Button } from "@yamada-ui/react"export default function Home() {return <Button>Click me!</Button>}
GitHubでこのページを編集する