[React+Tailwind] Flowbite で Breadcrumb を表示してみる | 心を無にして始める React

準備

Flowbite が使えるプロジェクトを準備します。

Breadcrumb コンポーネントをつくる

./src/components 配下に Breadcrumb.js を作ります。

import { forwardRef } from 'react';
import { Breadcrumb as FlowbiteBreadcrumb } from 'flowbite-react';

const Breadcrumb = forwardRef((
  {
    children,
    ...otherProps
  },
  ref,
) => {
  return (
    <FlowbiteBreadcrumb
      ref={ref}
      {...otherProps}
    >
      {children}
    </FlowbiteBreadcrumb>
  );
});

const BreadcrumbItem = forwardRef((
  {
    children,
    href,
    icon,
    ...otherProps
  },
  ref,
) => {
  return (
    <FlowbiteBreadcrumb.Item
      href={href}
      icon={icon}
      {...otherProps}
    >
      {children}
    </FlowbiteBreadcrumb.Item>
  );
})

export default Object.assign(Breadcrumb, {
  Item: BreadcrumbItem,
});

Breadcrumb コンポーネントをつかう

いつものように App.js を編集していきます。

import { HomeIcon } from '@heroicons/react/24/solid'

import Breadcrumb from './components/Breadcrumb';
import './App.css';

function App() {
  return (
    <div className="dark">
      <div className="h-screen p-8 flex flex-col justify-center items-center dark:!bg-gray-900">
        <div className="flex gap-3">
          <Breadcrumb>
            <Breadcrumb.Item href="#" icon={HomeIcon}>Home</Breadcrumb.Item>
            <Breadcrumb.Item href="#">Projects</Breadcrumb.Item>
            <Breadcrumb.Item>Flowbite React</Breadcrumb.Item>
          </Breadcrumb>
        </div>
        <div className="mt-4 flex gap-3">
          <Breadcrumb className="bg-gray-50 dark:bg-gray-800 py-3 px-5">
            <Breadcrumb.Item href="#" icon={HomeIcon}>Home</Breadcrumb.Item>
            <Breadcrumb.Item href="#">Projects</Breadcrumb.Item>
            <Breadcrumb.Item>Flowbite React</Breadcrumb.Item>
          </Breadcrumb>
        </div>
      </div>
    </div>
  );
}

export default App;

結果

はい、できました。