Storybookを使ったコンポーネント管理と基本的な使い方

date
Dec 30, 2022
repo_url
slug
storybook-component-basic
status
Published
summary
type
Post
thumbnail_url
tags
storybook
outer_link
StorybookはUIコンポーネント開発向けの支援ツールです。
コンポーネントのカタログを構築できます。「実際にコンポーネントを組み込んだ画面全体」ではなく、個々のコンポーネントごとに確認できます。
 
コンポーネントベースの開発では、いかに手軽に個々のコンポーネントを確認・一覧できるかが開発体験に大きな影響を与えます。Storybookを使用することで、独立した環境でUIコンポーネントの見た目や振る舞いを確認でき、コンポーネントの管理がしやすくなります。
 
またデザイナーの方でも開発中にUIコンポーネントの実装を簡単に確認でき、デザイン上の問題による手戻りを減らすことができます。
 

基本的な使い方

プロジェクトへの導入
npx sb@latest init
 
起動
npm run storybook
 

インストール時の警告について

eslintPluginが入ってないよ→インストール
 
npmはバージョン7が推奨だよ→
npm run storybook --legacy-peer-deps=true で実行
or
npx storybook@next automigrate で更新
 

①設定オブジェクトの定義

まずストーリーのグループ名や表示したいコンポーネントをまとめた設定オブジェクトを定義し、デフォルトエクスポートします。
// コンポーネントに対応させた .stories.tsxで終わるファイル名でファイルを作成
import { ComponentMeta, Story } from '@storybook/react';
import { StyledButton, StyledButtonProps } from '../components/StyledButton';

// ファイル内のstoryの設定(メタデータオブジェクト)
export default {
  //グループ名
  title: 'StyledButton',
  //使用するコンポーネント
  component: StyledButton,
} as ComponentMeta<typeof StyledButton>;
stories/StyledButton.stories/tsx
 
その後、Storybookで表示するコンポーネントを定義し、名前付きエクスポートします。
この時それぞれの変数名がStoryの名前になります。
// Storybookで表示するコンポーネントを定義し、名前付きエクスポートする(これが↑のStyledButtonのトグル内に追加されていく)
export const Primary: Story<StyledButtonProps> = (props) => {
  return (
    <StyledButton {...props} variant='primary'>
      Primary
    </StyledButton>
  );
};

export const Success: Story<StyledButtonProps> = (props) => {
  return (
    <StyledButton {...props} variant='success'>
      Success
    </StyledButton>
  );
};
export const Transparent: Story<StyledButtonProps> = (props) => {
  return (
    <StyledButton {...props} variant='transparent'>
      Transparent
    </StyledButton>
  );
};
stories/StyledButton.stories/tsx2
このコードを追加してStorybookを確認すると、StyledButtonというグループが左タブに表示され、その中にそれぞれPrimary,Success,Transparentという3つのStoryが表示されます。
notion image
 

公式サイト

 

© Hayato Kamiyama 2023 - 2024 - Build with Next.js & Notion