0Pricing
React Academy · บทเรียน

การเขียนสตอรี CSF3

ส่งออกออบเจ็กต์เมตาเริ่มต้นและสตอรีที่มีชื่อด้วย Component Story Format 3

การเขียนสตอรี CSF3 เป็นบทเรียน React Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน React Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส React Academy มีบทเรียนทั้งหมด 4 บทเรียน

CSF3 คืออะไร

รูปแบบเรื่องราวขององค์ประกอบ 3 (CSF3) คือรูปแบบเรื่องราวปัจจุบันของ Storybook เรื่องราวเป็นออบเจ็กต์ JavaScript/TypeScript ธรรมดา โดยไม่จำเป็นต้องใช้ฟังก์ชันการแสดงผลสำหรับกรณีง่าย ๆ

การส่งออก Meta

ไฟล์เรื่องราวทุกไฟล์ต้องมีการส่งออกเริ่มต้น ซึ่งก็คือออบเจ็กต์ Meta ที่อธิบายองค์ประกอบและกำหนดการกำหนดค่าร่วมกันของเรื่องราว

import type { Meta } from '@storybook/react';
import { Button } from './Button';

const meta: Meta<typeof Button> = {
  title: 'UI/Button',     // Storybook sidebar path
  component: Button,
  tags: ['autodocs'],     // enables auto-generated docs page
};

export default meta;

การส่งออกเรื่องราวแบบมีชื่อ

การส่งออกแบบมีชื่อแต่ละรายการจากไฟล์จะเป็นเรื่องราวหนึ่งรายการ ใน CSF3 เรื่องราวคือออบเจ็กต์ที่มีพร็อพเพอร์ตี args ซึ่งเป็นพร็อพส์ขององค์ประกอบ

import type { StoryObj } from '@storybook/react';

type Story = StoryObj<typeof Button>;

export const Primary: Story = {
  args: { label: 'Click me', variant: 'primary' },
};

export const Secondary: Story = {
  args: { label: 'Cancel', variant: 'secondary' },
};

export const Disabled: Story = {
  args: { label: 'Unavailable', disabled: true },
};

การสืบทอดเรื่องราว

เรื่องราวจะสืบทอดอาร์กิวเมนต์จากออบเจ็กต์เมตา กำหนดค่าเริ่มต้นร่วมกันใน meta.args และเขียนทับในแต่ละเรื่องราวตามความจำเป็น

const meta: Meta<typeof Button> = {
  component: Button,
  args: {
    onClick: fn(), // from @storybook/test
    disabled: false,
  },
};

export const Large: Story = {
  args: { size: 'large', label: 'Large Button' }, // merges with meta args
};

การเขียนทับฟังก์ชันการแสดงผล

ระบุฟังก์ชัน render ในเรื่องราวสำหรับกรณีซับซ้อนที่ต้องใช้การห่อ JSX แบบกำหนดเองหรือมีหลายอินสแตนซ์

export const WithIcon: Story = {
  render: (args) => (
    <div style={{ display: 'flex', gap: 8 }}>
      <Button {...args} icon={<StarIcon />} />
      <Button {...args} icon={<HeartIcon />} />
    </div>
  ),
  args: { label: 'Action' },
};

ตัวตกแต่งในเรื่องราวแต่ละรายการ

เพิ่มอาร์เรย์ decorators ให้กับเรื่องราวเพื่อห่อเรื่องราวนั้นด้วยผู้ให้บริการหรือโครงร่างเพิ่มเติมสำหรับเรื่องราวนั้นเท่านั้น

export const InsideCard: Story = {
  decorators: [
    (Story) => (
      <div style={{ padding: 24, background: '#f5f5f5' }}>
        <Story />
      </div>
    ),
  ],
  args: { label: 'Card Button' },
};

พารามิเตอร์ในเรื่องราว

ใช้ parameters เพื่อกำหนดค่าส่วนเสริมสำหรับแต่ละเรื่องราว เช่น การตั้งค่าพื้นหลังหรือพื้นที่แสดงผลสำหรับสถานะเฉพาะ

export const DarkMode: Story = {
  parameters: {
    backgrounds: { default: 'dark' },
  },
  args: { label: 'Dark Button', variant: 'primary' },
};

แท็ก autodocs

การเพิ่ม tags: ['autodocs'] ให้กับเมตาจะสร้างหน้าเอกสารอัตโนมัติที่มีตารางพร็อพส์และตัวอย่างแบบโต้ตอบจากเรื่องราวที่มีชื่อทั้งหมด

เรื่องราวสำหรับแต่ละสถานะ

เขียนเรื่องราวสำหรับทุกสถานะที่มีความหมายขององค์ประกอบ ได้แก่ ว่างเปล่า กำลังโหลด ข้อผิดพลาด รายการเดียว หลายรายการ เค้าโครง RTL เป็นต้น

export const Loading: Story = { args: { isLoading: true } };
export const Error: Story = { args: { error: 'Failed to load' } };
export const Empty: Story = { args: { items: [] } };
export const WithData: Story = { args: { items: mockUsers } };

หลักการตั้งชื่อ

ใช้ชื่อเรื่องราวแบบ PascalCase ที่อธิบายสถานะ หลีกเลี่ยงชื่อทั่วไปอย่าง Default และระบุให้ชัดเจน เช่น PrimaryDisabled, SecondaryWithIcon

การจัดกลุ่มเรื่องราวด้วยชื่อเรื่อง

title ในเมตาใช้รูปแบบเครื่องหมายทับเพื่อสร้างกลุ่มซ้อนกันในแถบด้านข้างของ Storybook โดย 'Forms/Input' จะสร้างกลุ่ม Forms ที่มีกลุ่มย่อย Input

const meta: Meta<typeof TextInput> = {
  title: 'Forms/TextInput',
  component: TextInput,
};
// Sidebar: Forms → TextInput → Primary, Error, Disabled...

การนำเรื่องราวกลับมาใช้ในการทดสอบ

เรื่องราว CSF3 เป็นออบเจ็กต์ธรรมดา ดังนั้นคุณจึงสามารถนำเข้าและประกอบเรื่องราวเหล่านี้ในการทดสอบหน่วยหรือเรื่องราวอื่นได้

import { Primary } from './Button.stories';

test('renders primary button', () => {
  render(<Button {...Primary.args} />);
  expect(screen.getByText('Click me')).toBeInTheDocument();
});

ตรวจสอบอย่างรวดเร็ว

ใน CSF3 คุณกำหนดพร็อพส์หรือสถานะของเรื่องราวอย่างไร

สรุปทบทวน

เรื่องราว CSF3 เป็นออบเจ็กต์ที่มีชนิดข้อมูลและมี args กำหนดค่าเริ่มต้นร่วมกันใน meta.args เขียนทับค่าในแต่ละเรื่องราว ใช้ render สำหรับ JSX แบบกำหนดเอง และเพิ่ม tags: ['autodocs'] เพื่อสร้างเอกสารโดยอัตโนมัติ เขียนเรื่องราวสำหรับทุกสถานะที่มีความหมายขององค์ประกอบ

คำถามที่พบบ่อย

บทเรียน “การเขียนสตอรี CSF3” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การเขียนสตอรี CSF3” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส React Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส React Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การเขียนสตอรี CSF3”

ส่งออกออบเจ็กต์เมตาเริ่มต้นและสตอรีที่มีชื่อด้วย Component Story Format 3 คุณปฏิบัติ React Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน React Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน React Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน

บทเรียน “การเขียนสตอรี CSF3” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน React Academy นี้ได้ไหม

ได้ บทเรียน React Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การตั้งค่า Storybook ในโปรเจกต์ React
  2. การเขียนสตอรี CSF3
  3. Args, Controls และส่วนเสริม Actions
  4. การทดสอบ Storybook และการถดถอยด้านภาพ
← กลับไปที่ React Academy