加入直播:周四美国东部时间上午11点,Storybook 9 发布及 AMA
文档
Storybook Docs

配置并与插件通信

插件 API 专为定制而设计。它为插件作者提供了不同的方式来配置用户 Storybook 并与之通信。让我们看看这些方式及其建议的使用场景。

Preset

Presets 将配置的负担从用户转移到插件。Preset 选项是全局的,并且可以从 NodeJS 访问。它们非常适合用于预配置 Webpack loader、Babel 插件以及其他库或框架特定的配置。

例如,许多库要求应用程序被一个 Provider 包裹,该 Provider 为组件树下方提供数据。Presets 可以描述自动添加包装器等行为,无需用户进行任何手动配置。如果用户安装了一个包含 Presets 的插件,该插件可以指示 Storybook 将所有 stories 包裹在 Provider 中。这使得人们只需一行配置即可开始在 Storybook 中使用你的库!

关于 Presets 的更多信息,请参阅:编写 Preset 插件

包裹每个 story 的机制被称为 Storybook 装饰器 (decorator)。它们允许你通过额外的渲染功能或提供数据来增强 stories。

Parameters

Parameters 在浏览器中可用,非常适合用于全局、组件级别或 story 级别配置插件行为。

例如,伪类状态插件 (Pseudo States addon) 使用 parameters 来启用各种伪类状态。用户可以提供全局默认值,然后在 story 级别覆盖它们。

使用 useParameter hook 在你的插件中访问 parameter 值。

export const Hover = {
  render: () => <Button>Label</Button>,
  parameters: { pseudo: { hover: true } },
};

Channels

Channels 允许管理器和预览面板之间进行双向通信,使用与 NodeJS EventEmitter 兼容的 API。你的插件可以接入特定的频道并响应这些事件。

例如,Actions 捕获用户事件并将其数据显示在面板中。

使用 useChannel hook 在你的插件中访问 channel 数据。

如需完整示例,请查看 storybookjs/addon-kit/withRoundTrip.ts