如何在 Storybook 的控件插件中获得下拉菜单?

Posted

技术标签:

【中文标题】如何在 Storybook 的控件插件中获得下拉菜单?【英文标题】:How do I get dropdown in controls addon for Storybook? 【发布时间】:2020-12-17 19:43:42 【问题描述】:

我想得到这个:

我的 stories.tsx 代码如下所示:

export default 
  title: "Components/Switch",
  argTypes: 
    color:  control: "select", options: ["primary", "secondary"] ,
  ,
;

但是,当我这样做时,页面无法呈现。

重现:

克隆此存储库:https://github.com/jauggy/storybook-args-error

npm i

npm run storybook

在左侧菜单中选择 Switch 组件。

【问题讨论】:

【参考方案1】:

您应该向control 属性发送一个对象。像这样:

export default 
  title: "Components/Switch",
  argTypes: 
    color:  control:  type: "select", options: ["primary", "secondary"] ,
  ,
;

更新 Storybook v7 control.options 将被弃用以获取更多信息,请访问:https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#deprecated-controloptions

【讨论】:

Storybook v7:您可以将options 数组作为color 的子元素和control 的兄弟元素移动。这也适用于 Storybook v6.2【参考方案2】:

您也可以在那里提供enum

const SwitchTypeEnum 
    PRIMARY = "primary",
    SECONDARY = "secondary",


export default 
  title: "Components/Switch",
  argTypes: 
    table: 
        summary: "SwitchTypeEnum",
        defaultValue:  summary: "SwitchTypeEnum.PRIMARY" ,
    ,
    color:  control:  type: "select", options: SwitchTypeEnum ,
  ,
;

【讨论】:

以上是关于如何在 Storybook 的控件插件中获得下拉菜单?的主要内容,如果未能解决你的问题,请参考以下文章

如何使 Storybook 插件“插件链接”适用于 Vue.js?

如何映射枚举以选择 Storybook 中的下拉列表?

@storybook/addon-controls:如何不为某个道具自动生成控件

如何根据另一个参数的值有条件地禁用 Storybook 中的控件?

如何在生产中为 Docs 插件的 React Storybook 启用 prop-types

如何在选定控件上使用 Jquery Multiselect 插件