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

Posted

技术标签:

【中文标题】如何根据另一个参数的值有条件地禁用 Storybook 中的控件?【英文标题】:How can I conditionally disable a control in Storybook based on the value of another argument? 【发布时间】:2021-02-25 15:50:10 【问题描述】:

我正在尝试根据另一个参数的值有条件地禁用 Storybook.js 控件。例如,我有一个模式组件,它的类型可以是“警报”、“确认”、“内容”或“照片”。所有这些模式类型,除了“照片”,还需要一个字符串类型的内容道具。 photo modal 不需要这个 content prop,因为它不显示任何文本。

所以我想在 type 属性选择为“照片”时禁用 Storybook 中的内容控件。

我首先尝试编写一个自定义的 propType 验证器,但 Storybook 认为这个 prop 应该是一个函数: Custom PropType validator in Storybook

现在我正在尝试禁用组件故事书文件中的控件:

export default 
  title: 'Global Design System/Modal',
  component: Modal,
  argTypes: 
    type: 
      control: 
        type: 'select',
        options: [
          'alert',
          'confirmation',
          'content',
          'photo'
        ]
      
    ,
    content: 
      table: 
        disable: function() 
          return this.argTypes.type === 'photo'
        
      
    
  ,
;

但在这种情况下,我无法引用 'type' 的当前值

【问题讨论】:

【参考方案1】:

暂时不能!我看到成员 SB 为类似的功能创建了 PR,但它没有合并就关闭了。

【讨论】:

以上是关于如何根据另一个参数的值有条件地禁用 Storybook 中的控件?的主要内容,如果未能解决你的问题,请参考以下文章

如何根据数据框中的值有条件地对数据进行分组?

如何根据 s-s-rS 中单独字段的值有条件地格式化整行的文本颜色?

根据熊猫中的另一个列值有条件地填充列值

根据三列的值有条件地和交互地计算列

Javascript:根据键的值有条件地过滤 JSON? [复制]

ReactJS 7 - 如何根据其值有条件地仅更改表格单元格(而不是行)的背景颜色?