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

Vue 插槽

Storybook 对 Vue 插槽的支持

在 Github 上查看

Stand With Ukraine

允许在 Storybook 的 CSF 文件中使用 Vue 插槽。

特性

  • 支持 Vue 3
  • 为包含插槽的 stories 生成代码片段
  • 通过 Storybook 的 controls 控制插槽的特定方面
  • 用组件包裹插槽内容

📦 安装

pnpm add -D storybook-addon-vue-slots

main.ts 文件中将 storybook-addon-vue-slots 添加到你的 plugins

// .storybook/main.ts
export default {
  // ...
  addons: [
    // ...
    "storybook-addon-vue-slots",
  ],
} satisfies StorybookConfig;

示例

运行

npm run storybook

运行一个示例 Storybook

用法

零配置

默认情况下,此插件会将 [slotName] 参数传递给模板,例如 {{ args.default }}

基础用法

通过向插槽定义传递字符串来为插槽添加描述

// MyComponent.stories.ts

export default meta = {
  parameters: {
    slots: {
      default: `Default slot content`,
    },
  },
};

标准用法

在模板中使用 args.[slotName] 将 Storybook controls 中的数据传递给插槽,或访问其他参数。

// MyComponent.stories.ts

export default meta = {
  parameters: {
    slots: {
      default: {
        description: "Default slot",
        template: `<p>{{ args.default }}</p>`,
      },
      header: {
        description: "Header slot",
        template: `<p>{{ args.header }}</p>`,
      },
    },
  },
};

因此,Storybook 表格中 header arg control 的值被传递到插槽模板中,从而允许控制插槽的某个方面。

高级用法

添加组件

// MyComponent.stories.ts

export default meta = {
  parameters: {
    slots: {
      default: {
        description: "Default slot",
        template: `<p>{{ args.default }}</p>`,
      },
      header: {
        description: "Header slot",
        components: { AppButton },
        template: `<AppButton>{{ args.header }}</AppButton>`,
      },
    },
  },
};

待办

  • 插槽回退支持

贡献

💖 资金支持

通过 PayPalGitHub Sponsors 支持我的开源工作。

许可

MIT 许可证 © 2023 Jacob Janisz