Storybook项目中的MDX文档编写指南
什么是MDX文档
MDX是一种结合了Markdown和JSX的混合格式文档,它允许开发者在Markdown文档中直接嵌入React组件和Storybook故事。在Storybook项目中,MDX成为创建丰富交互式组件文档的强大工具。
MDX的核心优势
- 可读性与功能性兼备:使用Markdown的简洁语法编写文档内容
- 无缝集成组件故事:直接嵌入Component Story Format(CSF)定义的故事
- 灵活交互能力:在文档任意位置插入JSX组件块
- 统一文档体系:可与常规故事文件并存于Storybook中
基础使用示例
让我们从一个简单的Checkbox组件文档开始:
import { Meta, Story } from '@storybook/addon-docs';
import { Checkbox } from './Checkbox';
import * as CheckboxStories from './Checkbox.stories';
<Meta of={CheckboxStories} />
# Checkbox组件
这是一个基础的复选框组件,支持选中和未选中两种状态。
<Story of={CheckboxStories.Primary} />
对应的CSF故事文件:
import { Checkbox } from './Checkbox';
export default {
title: 'Components/Checkbox',
component: Checkbox,
};
export const Primary = {
args: {
label: '复选框',
checked: false,
},
};
MDX文档结构解析
1. 元数据定义
使用<Meta>
块定义文档在Storybook侧边栏中的位置:
<Meta of={CheckboxStories} />
重要提示:of
属性必须引用故事文件的默认导出,而不是组件本身。
2. 文档内容编写
支持标准的Markdown语法:
# 组件标题
这里是详细的组件说明文档...
- 功能点1
- 功能点2
3. 故事嵌入
使用<Story>
块嵌入已定义的故事:
<Story of={CheckboxStories.Primary} />
4. 自定义组件集成
可以自由插入任何React组件:
## 使用示例
<DoDontContainer>
<Do>
<Checkbox label="正确用法" checked />
</Do>
<Dont>
<Checkbox label="错误用法" disabled checked />
</Dont>
</DoDontContainer>
高级应用场景
1. 独立文档页面
创建不绑定特定组件的纯文档:
# 设计指南
## 色彩规范
我们的设计系统使用以下主色调...
## 间距规则
采用8px为基准的间距系统...
2. 多组件文档
单个文档中展示多个相关组件:
import * as ButtonStories from './Button.stories';
import * as IconStories from './Icon.stories';
# 按钮与图标组合
<Story of={ButtonStories.Primary} />
<Story of={IconStories.Arrow} />
3. 外部Markdown集成
导入现有的Markdown文档:
import { Markdown } from '@storybook/addon-docs';
import changelog from '../CHANGELOG.md';
<Markdown>{changelog}</Markdown>
配置与优化
1. 启用GFM扩展
在.storybook/main.js
中配置Markdown扩展:
export default {
addons: [
{
name: '@storybook/addon-docs',
options: {
mdxPluginOptions: {
mdxCompileOptions: {
remarkPlugins: [require('remark-gfm')],
},
},
},
},
],
};
2. 文档链接策略
在文档中创建内部链接:
[查看按钮文档](?path=/docs/components-button--primary)
[跳转到故事画布](?path=/story/components-button--primary)
常见问题解决
- 表格渲染异常:安装并启用
remark-gfm
插件 - 文档未显示:检查故事文件路径配置是否正确
- 控制项不更新:确保未禁用
inline
渲染选项 - React版本冲突:确认项目依赖的React版本与Storybook兼容
最佳实践建议
- 内容结构化:使用清晰的标题层级组织文档
- 示例丰富:为每个主要用例提供可视化示例
- 保持简洁:避免在单个文档中包含过多内容
- 版本控制:将MDX文件与组件代码一同管理
- 团队协作:建立统一的文档编写规范
通过MDX,开发者可以在Storybook中创建既美观又实用的组件文档,有效提升团队协作效率和组件复用性。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考