Honoではじめる
パッケージをインストールする
まず、アプリケーションを作成します。
ターミナルで次のコマンドのいずれかを実行します。
pnpm create hono
必要なパッケージをインストールします。
pnpm add react react-dom
pnpm add -D @types/react @types/react-dom @hono/vite-dev-server vite
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を便利に使用するためのコンポーネントを提供します。 |
セットアップ
index.ts
をindex.tsx
に変更して、内容も変更します。
index.tsx
import {ColorModeScript,ThemeSchemeScript,defaultConfig,} from "@yamada-ui/react"import { Hono } from "hono"import { getCookie } from "hono/cookie"import { renderToString } from "react-dom/server"const app = new Hono()app.get("*", (c) => {const colorMode = getCookie(c, "ui-color-mode") as| ColorModeWithSystem| undefinedconst themeScheme = getCookie(c, "ui-theme-scheme")const initialColorMode = colorMode ?? config.initialColorModeconst initialThemeScheme = themeScheme ?? config.initialThemeSchemereturn c.html(renderToString(<html lang="ja"><head><script type="module" src="/src/client.tsx"></script></head><body><ColorModeScripttype="cookie"nonce="testing"initialColorMode={initialColorMode}/><ThemeSchemeScripttype="cookie"nonce="testing"initialThemeScheme={initialThemeScheme}/><div id="root"></div></body></html>,),)})export default app
index.tsx
にColorModeScript
とThemeSchemeScript
を追加する必要があるのは、サーバーサイドでレンダリングされたページがクライアントに送信された際、ダークモードを使用している場合の画面のフラッシュを防ぐためです。
package.json
の内容を変更します。
package.json
{"type": "module","scripts": {"dev": "vite"}// ...}
tsconfig.json
の"jsxImportSource"
を"react"
にします。
tsconfig.json
{"compilerOptions": {"jsxImportSource": "react"// ...}}
vite.config.ts
を追加します。
vite.config.ts
import devServer, { defaultOptions } from "@hono/vite-dev-server"import { defineConfig } from "vite"export default defineConfig(({ mode }) => {if (mode === "client") {return {build: {rollupOptions: {input: "./src/client.tsx",output: {entryFileNames: "static/client.js",},},},}} else {return {ssr: {external: ["react", "react-dom"],},plugins: [devServer({exclude: ["/*", ...defaultOptions.exclude],entry: "src/index.tsx",}),],}}})
UIProvider
を追加する
Yamada UIをインストール後、client.tsx
を作成して、UIProvider
を追加します。
client.tsx
import { UIProvider } from "@yamada-ui/react"import { createRoot } from "react-dom/client"import App from "./app"const domNode = document.getElementById("root")!const root = createRoot(domNode)root.render(<UIProvider><App /></UIProvider>,)
デフォルトのテーマは、UIProvider
のなかに含まれています。
テーマやコンフィグをカスタマイズしたい場合は、テーマをカスタマイズするとコンフィグをカスタマイズするをご覧ください。
コンポーネントを使用する
UIProvider
を追加したら、アプリケーション内でコンポーネントを呼び出します。
app.tsx
import { FC } from "react"import { Button } from "@yamada-ui/react"const App: FC = () => {return <Button>Click me!</Button>}export default App
GitHubでこのページを編集する