← 返回
开发者工具
中文
Storybook
Build component stories with proper args, controls, decorators, and testing patterns.
使用规范的参数、控件、装饰器及测试模式构建组件故事。
ivangdavila
开发者工具
clawhub
v1.0.0 1 版本 100000 Key: 无需
#latest
概述
CSF Format (Component Story Format)
- Default export is component meta—title, component, args, decorators
- Named exports are stories—each export becomes a story in sidebar
satisfies Meta for TypeScript type checking- CSF3 uses object syntax, not functions—
export const Primary = { args: {...} }
Args vs ArgTypes
args are actual prop values passed to component—args: { label: 'Click me' }argTypes configure controls UI—argTypes: { size: { control: 'select', options: ['sm', 'lg'] } }- Default args in meta apply to all stories—override in individual stories
argTypes: { onClick: { action: 'clicked' } } logs events in Actions panel
Controls
- Auto-inferred from TypeScript props—boolean becomes toggle, string becomes text input
- Override control type:
argTypes: { color: { control: 'color' } } - Disable control:
argTypes: { children: { control: false } } - Options for select:
control: { type: 'select' }, options: ['a', 'b', 'c']
Decorators
- Wrap stories with context—providers, layout wrappers, theme
- Component-level in meta:
decorators: [(Story) => ] - Global in
.storybook/preview.js: applies to all stories - Order matters—later decorators wrap earlier ones
Play Functions
- Interactive testing within story:
play: async ({ canvasElement }) => {...} - Use
@storybook/testing-library for queries—within(canvasElement).getByRole() await userEvent.click(button) for interactionsexpect(element).toBeVisible() for assertions—tests run in browser
Actions
argTypes: { onClick: { action: 'clicked' } } auto-logs to Actions panel- Or import:
import { action } from '@storybook/addon-actions' - Use
fn() from @storybook/test in Storybook 8+ for spying in play functions - Actions help verify event handlers without manual console.log
Story Organization
- Title path creates hierarchy:
title: 'Components/Forms/Button' - Stories appear in order of export—put Primary first
tags: ['autodocs'] generates docs page automaticallyparameters: { docs: { description: { story: 'text' } } } adds story description
Common Patterns
- Default state:
export const Default = {} - With all props:
export const WithIcon = { args: { icon: } } - Edge cases: Empty, Loading, Error, Disabled states as separate stories
- Responsive: Use viewport addon parameters per story
Render Functions
- Custom render:
render: (args) => - Access context in render:
render: (args, { globals }) => ... - Useful when story needs different JSX structure than default
- Prefer decorators for wrapping, render for restructuring
Configuration
.storybook/main.js: addons, framework, stories glob patterns.storybook/preview.js: global decorators, parameters, argTypes- Stories glob:
stories: ['../src/*/.stories.@(js|jsx|ts|tsx)'] - Static assets:
staticDirs: ['../public'] for images/fonts
Common Mistakes
- Forgetting to install addon AND add to main.js addons array
- Using
storiesOf API—deprecated, use CSF exports - Missing component in meta—controls won't auto-generate
- Decorators returning
Story without calling it: (Story) => not (Story) => Story
版本历史
共 1 个版本
-
v1.0.0
当前
2026-03-29 01:45 安全 安全
安全检测
腾讯云安全 (Sanbu)
安全,无风险
查看报告
🔗 相关推荐
developer-tools
larsonreever
AI驱动平台,提供快速全栈开发、智能体、工作流自动化及低代码AI集成的可扩展产品创建。
★ 68
📥 180,150
ai-intelligence
ivangdavila
自我反思+自我批评+自我学习+自组织记忆。智能体评估自身工作、发现错误并持续改进。
★ 1,358
📥 318,312
developer-tools
steipete
使用 `gh` CLI 与 GitHub 交互,通过 `gh issue`、`gh pr`、`gh run` 和 `gh api` 管理议题、PR、CI 运行及高级查询。
★ 668
📥 324,133