Breadcrumb パンくず
現在のページが階層構造の中でどこにいるかを示し、上位階層へ段階的にナビゲートできます。
基本的な使い方
基本的な使い方
import { LhBreadcrumb, LhBreadcrumbItem } from '@lh-ui/react'
export default function Demo() {
return (
<LhBreadcrumb>
<LhBreadcrumbItem to="/">ホーム</LhBreadcrumbItem>
<LhBreadcrumbItem to="/components">コンポーネント</LhBreadcrumbItem>
<LhBreadcrumbItem>パンくず</LhBreadcrumbItem>
</LhBreadcrumb>
)
}
Breadcrumb Props
| プロパティ | 説明 | 型 | 使用可能な値 | デフォルト値 |
|---|---|---|---|---|
| separator | 区切り文字 | string | — | '/' |
| maxItems | 最大表示項目数。超えると「先頭項目 + 省略記号 + 末尾項目」に折りたたむ | number | — | 0(折りたたまない) |
| sx | クイックレイアウトプロパティ | SxProps | — | — |
BreadcrumbItem Props
| プロパティ | 説明 | 型 | デフォルト値 |
|---|---|---|---|
| to | 遷移先。存在かつ末尾項目でない場合はリンクとして描画 | string | — |
| replace | plus API 互換のために保持。React 側のネイティブ <a> 遷移はこの設定の影響を受けない | boolean | false |
| children | テキスト | ReactNode | — |
制御 / 非制御
折りたたみ状態はコンポーネントの内部状態です。省略記号ボタンをクリックするとすべて展開され、外部からの介入は不要です。maxItems に 0 を渡すか未指定なら折りたたみません。
子ノードの制限
children は直接 LhBreadcrumbItem でなければなりません(.map での描画は可能)。カスタムコンポーネントでラップしてはいけません —— 親コンポーネントは Children.toArray で子要素の型を絞り込んでインデックスを注入しており、ラップするとインデックス注入に失敗します。lh-ui-plus の collectPaneVnodes の下掘り制限と一致します。
ルーティング連携
React エコシステムにはグローバルルーターがなく、リンクはネイティブ <a> による直接遷移として描画されます。React Router に接続する場合は onClick で割り込んで navigate を呼ぶか、自前で <Link> を描画して to の代わりにしてください。
アクセシビリティ
ルート要素は <nav aria-label>、リストは <ol> です。末尾項目は aria-current="page" を出力し、省略記号ボタンには aria-label(言語パック breadcrumb.more)が付きます。
ref
forwardRef<HTMLElement> —— <nav> ルート要素。LhBreadcrumbItem は HTMLLIElement を転送します。
スタイル
import '@lh-ui/react/theme.css'
import '@lh-ui/react/style/breadcrumb'