0Pricing
Vue Academy · レッスン

コンポーネントStoryの作成

CSF3形式、default export(title、component)、Storyとしての名前付きexport、args

「コンポーネントStoryの作成」はCoddyKit上の無料Vue Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはVue Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Vue Academyコースには全4レッスンが含まれています。

ストーリーでコンポーネントの状態を表す

ストーリーは、コンポーネントの1つの状態、つまり特定のpropsとコンテンツの組み合わせを表します。たとえば、ボタンにはPrimary、Secondary、Disabledのストーリーを用意できます。Storybookでは、それぞれを個別に閲覧できるサンプルとしてレンダリングします。

CSF3:最新のフォーマット

StorybookではComponent Story Format 3(CSF3)を使用します。1つのファイルに、コンポーネントを説明するデフォルトエクスポートと、各ストーリー用の名前付きエクスポートを記述します。通常のJavaScript/TypeScriptオブジェクトで構成され、定型コードは最小限です。

デフォルトエクスポート(Meta)

デフォルトエクスポートはmetaオブジェクトです。最低限、サイドバーのパスを表すtitleと、ドキュメント化するcomponentを指定します。

import Button from "./Button.vue"

export default {
  title: "Components/Button",
  component: Button,
}

titleでサイドバーを整理する

titleではスラッシュを使って、Storybookのサイドバーにフォルダー階層を作成します。"Forms/Inputs/TextField"とすると、3階層の深さにネストされます。

export default {
  title: "Forms/Inputs/TextField",
  component: TextField,
}

名前付きエクスポートがストーリーになる

名前付きエクスポートはそれぞれストーリーのバリエーションです。エクスポート名がサイドバーでのストーリーラベルになります。

export const Primary = {}
export const Secondary = {}
export const Disabled = {}

argsオブジェクト

ストーリーのargsオブジェクトでpropsの値を指定します。Storybookがそれらをコンポーネントに渡し、Controlsパネルで実行中に値を調整できます。

export const Primary = {
  args: {
    label: "Click me",
    variant: "primary",
  },
}

argsによる複数のバリエーション

argsだけを変更して、同じコンポーネントを複数のストーリーで再利用できます。各エクスポートでは、異なるpropsを指定してコンポーネントをレンダリングします。

export const Primary = { args: { variant: "primary", label: "Save" } }
export const Danger = { args: { variant: "danger", label: "Delete" } }

Metaでデフォルトのargsを指定する

共通のargsをmetaオブジェクトに指定し、個々のストーリーでは異なる部分だけを上書きします。これにより、ストーリーをDRYに保てます。

export default {
  component: Button,
  args: { label: "Button" }, // default for all stories
}

export const Disabled = { args: { disabled: true } }

renderを使ったスロット付きストーリー

スロットのコンテンツを扱う場合は、コンポーネントを使ったテンプレートを返すrender関数を指定します。これにより、argsだけでは表現できないケースにも対応できます。

export const WithIcon = {
  render: (args) => ({
    components: { Button },
    setup() { return { args } },
    template: '<Button v-bind="args">⭐ Star</Button>',
  }),
}

tagsによるドキュメントの自動生成

metaにtags: ["autodocs"]を追加すると、propsとストーリーから、コンポーネントのドキュメントページをStorybookに自動生成させることができます。

export default {
  title: "Components/Button",
  component: Button,
  tags: ["autodocs"],
}

autodocsで生成されるもの

autodocsページには、コンポーネントのprops(名前、型、デフォルト値)が一覧表示され、各ストーリーが実際に操作できるサンプルとして表示されます。説明コメントもレンダリングされるため、追加ファイルなしで常に更新される仕様書になります。

確認テスト

ストーリーの記述についての理解度を確認しましょう。

まとめ

コンポーネントストーリーの記述方法を学びました。

  • ストーリーはコンポーネントの1つの状態を表し、CSF3ではオブジェクトをエクスポートします。
  • デフォルトエクスポートは、title(サイドバーのパス)とcomponentを持つmetaです。
  • 名前付きエクスポートはそれぞれストーリーのバリエーションで、argsでpropsの値を指定します。
  • 共通のargsはmetaに指定し、ストーリーで残りの値を上書きします。スロットにはrenderを使用します。
  • tags: ["autodocs"]でドキュメントページを自動生成できます。

よくある質問

「コンポーネントStoryの作成」レッスンは無料ですか?

はい。「コンポーネントStoryの作成」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Vue Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Vue Academyコースには全4レッスンが含まれています。

「コンポーネントStoryの作成」で何を学びますか?

CSF3形式、default export(title、component)、Storyとしての名前付きexport、args ブラウザで直接実行するハンズオンコードでVue Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Vue Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのVue Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。

「コンポーネントStoryの作成」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このVue Academyレッスンでコードを書いて実行できますか?

はい。すべてのVue Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Vue 3向けStorybookの設定
  2. コンポーネントStoryの作成
  3. Controls、Actions、Args
  4. Storybook Addonとアクセシビリティテスト
← Vue Academyに戻る