v3.1.7

Global

src/global.tsx (or jsx) または /src/pages/_global.tsx (or jsx) を作成すると、サイト全体を囲うラッパーコンポーネントとなります。export default が必須です。

INFO

  • Head コンポーネントが使用できます
  • Metadata を export できます
  • 静的ビルドされるため React Hooks を使用することはできません
  • Partial Hydration で React Hooks を含んだコンポーネントを設置することはできます
  • 非同期関数 getStaticData を用いた Fetch が使用できます
  • import した CSS は bundle.css として結合し全体に適応されます
// src/global.tsx
import type { GlobalProps } from "minista"
import { Head } from "minista"

import "./global.css"

export default function ({ url, title, children }: GlobalProps) {
  return (
    <>
      <Head>
        <title>{title}</title>
        <meta property="description" content="description" />
      </Head>
      {url === "/" ? (
        <div className="home">{children}</div>
      ) : (
        <div>{children}</div>
      )}
    </>
  )
}

GlobalProps

Global ではページデータである children の他に、Pages で export した Metadata を props として利用できます。また、ページの url を参照できます。これらの props をもとにページ毎のレイアウト変更などの条件分岐が可能です。

type GlobalProps = {
  url: string
  title: string
  group: string
  draft: boolean
  children: React.ReactNode
  [key: string]: any
}