New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
add storybook #22
add storybook #22
Conversation
上記のコードは、Reactのコンポーネントである
コンポーネントの見た目は、 このコンポーネントは、 |
このコードは、HeaderコンポーネントのStorybookのストーリーを定義しています。
次に、
次に、
|
このコードは、
また、 このコードでは、Storybook のリポジトリで提供される 【参考情報】 |
このコードは、Reactで書かれたヘッダーコンポーネントです。以下にコードの概要を説明します。
|
…t with dark theme
…ature/update-20231119
このスニペットは、ReactコンポーネントのストーリーファイルであるHeader.stories.tsです。Headerコンポーネントに関するストーリーを定義しています。 以下は、各セクションの説明です。
|
このファイルは、Storybookを使用して作成された
このストーリーファイルには、以下の2つのストーリーが含まれています:
|
このコードは、Storybookを使用してReactコンポーネントのストーリーを作成するためのファイルです。 まず、 import type { Meta, StoryObj } from '@storybook/react';
import { within, userEvent } from '@storybook/testing-library';
import { Page } from './Page';
const meta = {
title: 'ページ/Page',
component: Page,
parameters: {
// More on how to position stories at: https://storybook.js.org/docs/react/configure/story-layout
layout: 'fullscreen',
},
} satisfies Meta<typeof Page>;
export default meta;
type Story = StoryObj<typeof meta>;
export const LoggedOut: Story = {};
// More on interaction testing: https://storybook.js.org/docs/react/writing-tests/interaction-testing
export const LoggedIn: Story = {
play: async ({ canvasElement }) => {
const canvas = within(canvasElement);
const loginButton = await canvas.getByRole('button', {
name: /Log in/i,
});
await userEvent.click(loginButton);
},
}; このファイルでは、 1つ目のストーリーは、 2つ目のストーリーは、
このように、ログイン操作が再生(自動実行)されるストーリーが定義されています。 参考資料: |
このコードは、Reactの関数コンポーネントである
|
このファイルは、ButtonコンポーネントのStorybookのストーリー定義を含んでいます。以下にいくつかの重要な情報をまとめます。
|
このコードは、Reactで書かれたボタンコンポーネントです。以下に、コードの要点を説明します。
|
このファイルは、ReactのコンポーネントであるPage.tsxを定義しています。このコンポーネントはPageという名前の関数コンポーネントです。 このコンポーネントは、Headerコンポーネントをインポートしています。また、CSSファイルであるpage.cssもインポートしています。 また、このコンポーネントはUserという名前の型を定義しています。この型はnameというプロパティを持ち、値の型はstringです。 Pageコンポーネントでは、useStateフックを使用してuserというステート変数を定義しています。初期値はundefinedです。 return文の中で、Headerコンポーネントをレンダリングしています。この際、userステート変数と、onLogin、onLogout、onCreateAccountというコールバック関数をpropsとして渡しています。 その後、article要素内にsection要素があり、その中にいくつかのHTML要素とテキストがあります。 このコンポーネントは、Storybookのページ内で利用されることを想定しています。具体的なデータはモックとして扱われ、ページの状態を簡単に構築・レビューすることができます。 また、storyコンポーネントのargsを使用してデータを構築するか、サービスからデータを取得してページコンポーネント内で組み立てることも可能です。Storybookではこれらのサービスをモック化することもできます。 このファイルの最後には、ビューポートの幅を調整するためのツールバーとしてのViewportsアドオンが記述されています。 |
このファイルは、SectionLayoutコンポーネントのStorybook用のストーリーです。ストーリーブックは、コンポーネントの動作や見た目を実際に確認するためのツールであり、開発者にとって便利な機能を提供します。 ストーリーの内容を解説します。 1行目では、@storybook/reactモジュールからMetaとStoryObjをインポートしています。 meta定数は、ストーリーの情報を定義しています。 次に、metaをtypeof SectionLayoutの型で満たすMeta型として宣言し、これをexportしています。 最後に、Defaultストーリーを定義しています。 |
このコードは、Reactコンポーネントである コード内で使用されているライブラリとコンポーネントは次の通りです:
コードの処理の流れは次の通りです:
|
diff --git a/src/stories/parts/SectionLayout.stories.ts b/src/stories/parts/SectionLayout.stories.ts
+export const Default: Story = { |
このコードは、
|
このコードは、Reactで作成されたボタンコンポーネントです。 このコンポーネントには以下のプロパティがあります:
このボタンコンポーネントは、 このコンポーネントは、 |
diff --git a/src/stories/parts/SectionLayout.stories.ts b/src/stories/parts/SectionLayout.stories.ts
+export const Default: Story = {
このコードは、SectionLayoutコンポーネントのStorybookファイルです。Storybookは、コンポーネントのインタラクティブなデモやドキュメンテーションを提供するツールです。 このファイルでは、SectionLayoutコンポーネントに関するメタデータとストーリーを定義しています。 また、ストーリーでは、SectionLayoutコンポーネントのデフォルトのプロパティを指定しています。この場合、rowsプロパティに2つのセクションを含んだ配列を渡しています。 なお、ストーリーの定義にはStoryObj型を使用しています。これは、StorybookのStoryオブジェクトを定義するための型です。 |
このコードは、ReactコンポーネントのSectionLayoutを定義しています。 このコンポーネントは、MuiのPaperコンポーネントとGridコンポーネントを使用して、グリッドレイアウトを作成します。Paperコンポーネントは、背景色や余白、高さなどのスタイルを設定するために使用されます。 SectionLayoutコンポーネントには、propsとしてrowsという配列が渡されます。この配列はCustomGridItemという型を持ち、idとnameのプロパティを持つオブジェクトが要素として含まれます。 SectionLayoutコンポーネントでは、Gridコンポーネントを使用して、rows配列の要素を表示します。各要素はStyledSectionコンポーネントでラップされ、その中に表示するテキストはrow.nameから取得されます。 Gridコンポーネントのxsとlgのプロパティは、グリッドのレスポンシブな動作を制御します。xs=12, lg=12とすることで、画面幅がどのサイズになっても常に1行に表示されるようになります。 最後に、SectionLayoutコンポーネントはPaperコンポーネントでラップされ、レイアウト全体を囲む要素となります。 |
No description provided.