首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

在Storybook中,你可以使用枚举(enumerations)来创建一个选择下拉列表,以便在组件的故事(stories)中进行交互式展示和测试。以下是如何实现这一功能的步骤:

基础概念

枚举是一种数据类型,它允许你定义一组命名的常量值。在Storybook中,你可以使用枚举来表示组件属性(props)的可能取值。

相关优势

  1. 提高可读性:使用枚举可以使代码和配置文件更易读,因为它们提供了有意义的命名。
  2. 减少错误:枚举可以限制属性的取值范围,从而减少因输入错误而导致的bug。
  3. 易于维护:如果需要添加或删除选项,只需修改枚举定义,而不需要在多个地方进行修改。

类型

枚举可以是简单的字符串或数字集合,也可以是更复杂的对象集合。

应用场景

当你需要在Storybook中为组件属性提供一个有限的、预定义的选项列表时,可以使用枚举。

实现步骤

  1. 定义枚举:首先,你需要定义一个枚举类型。
  2. 在Storybook中使用枚举:然后,在Storybook的故事文件中使用这个枚举。

示例代码

假设我们有一个组件 MyComponent,它有一个属性 status,这个属性可以取三个值:'active''inactive''pending'

  1. 定义枚举
代码语言:txt
复制
// enums.js
export const StatusEnum = {
  ACTIVE: 'active',
  INACTIVE: 'inactive',
  PENDING: 'pending',
};
  1. 在Storybook中使用枚举
代码语言:txt
复制
// MyComponent.stories.js
import React from 'react';
import { storiesOf } from '@storybook/react';
import MyComponent from './MyComponent';
import { StatusEnum } from './enums';

const statusOptions = Object.values(StatusEnum).map((status) => ({
  value: status,
  label: status.charAt(0).toUpperCase() + status.slice(1),
}));

storiesOf('MyComponent', module)
  .add('default', () => <MyComponent status={StatusEnum.ACTIVE} />)
  .add('with controls', () => (
    <MyComponent status={StatusEnum.ACTIVE} />
  ))
  .addParameters({
    controls: {
      matchers: {
        color: /(background|color)$/i,
        date: /Date$/,
      },
    },
  })
  .add('with select dropdown', () => (
    <MyComponent status={StatusEnum.ACTIVE} />
  ))
  .addParameters({
    controls: {
      knobs: {
        select: {
          'status': {
            options: statusOptions,
            value: StatusEnum.ACTIVE,
          },
        },
      },
    },
  });

参考链接

通过上述步骤,你可以在Storybook中创建一个基于枚举的选择下拉列表,从而更方便地测试和展示组件的不同状态。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

手摸手教你用 Storybook 改善组件库的开发

在上一篇文章 《手摸手教你封装跨项目复用的 Vue 组件》 中,介绍了一例用 rollup.js 封装 Vue.js 组件库的实践;限于篇幅和复杂度,其中组件的即时调试预览部分,也同样采用了 rollup.../stories/ 修改 .storybook/config.js 中的相应配置,直接把 .stories.js 文件和对应的组件源码放在一起: const req = require.context(...为了正确解析 Vue 单文件组件中的样式部分,修改设置: // .storybook/webpack.config.js const path = require('path'); module.exports.../preview-head.html 中引入必要的样式等,项目中的类似工作可能是在 index.html 等处完成的: <link rel="stylesheet" href="//foo/bar/index.css.../HorizentalRadios'; storiesOf('projectA|超过个数变成下拉的raidos', module) .add('列表少于预期个数时', () => ({ components

1.9K10

一、首页第一个首页栏制作【仿淘票票系统前后端完全制作(除支付外)】

30px,设置背景色为红色: 此时页面显示如下: 也可以重命名这个行为 logo ,方便之后添加 logo 内容: 接着我们添加下拉菜单列表,下拉菜单列表在扩展组件中,...点击需要添加下拉菜单的容器,然后点击扩展组件,点击下拉菜单即可添加: 在下拉菜单的属性中,,更改当前选中值,设置选项列表中的内容,更改大小即可完成: 接着在右侧的行中更改水平对齐属性选择靠右...,此时添加的元素才有靠右显示: 接着添加一个正在热映文本,该文本需要设置其排版,上下左右内边距,否则无法设置其边距框: 接着在这个文本中的边框与圆角处设置下边距的颜色为主题色(紫红色...接着由于我们的内容需要与上下左右边缘有一定距离,那么此时直接设置内容行的内边距即可统一的为其元素自带边距效果,此时设置这个内容行的边距如下: 接着再内容行中创建一个行,命名为热映内容,这个热映内容也就是包裹单独一个影片信息的行...: 此时将刚刚所编写的所有内容赋值到导航页1中: 重命名导航页1为首页: 接着点击首页导航栏,在属性中更改选中的图标以及文本: 接着预览: 最后把其它导航页的名称和图片进行修改即可

8.6K20
  • 开发 | 如何打造一个有质感的小程序

    本着这个原则,我们不仅选择了开发小程序,并且在设计的时候尽可能直观的展示内容给用户,减少用户的思考和使用成本。所以最开始的版本只有一个主题列表,点进去就是主题下的视频列表。...用户唯一的思考就是对话题是否感兴趣——感兴趣就点进去看视频,不感兴趣就下拉看其他的主题。 之后的版本都是在这个基础上不断的优化的。...在最新的版本中,我们又加入了每日精选功能,这个功能对于选择困难的用户比较友好,因为有时候面对很多的主题真的不知道我应该看哪一个。 而每日精选是我们的小编精心挑选出来的视频,所以一般都不会太差。...作为映兔视频小程序的开发者,感觉到小程序开发的友好程度和开发成本真的很低。...虽然小程序的布局和功能相比 HTML 有所限制,但是其基本组件也基本够做好一个好应用了,而且体验上会比在微信里的 web 应用要好一点。 即便如此,在开发的过程中还是会遇到一些问题的。

    50030

    在测试自动化中使用Java枚举

    这意味着,从国家/地区下拉列表中,我们将选择与“ ES”枚举条目的“ 标签 ”属性相对应的值。这很容易检索:Country.ES.label。...此示例中的下拉列表的工作方式如下:未打开(未单击它们)时,“国家/地区”下拉列表显示为空选择,而“城市”下拉列表则完全为空。此时的城市下拉列表已禁用,您无法从中选择任何选项。 ?...我们要编写的测试需要检查我们想要并已存储在Enum中的所有国家和城市是否存在于其相应的下拉列表中。还要记住,每个下拉列表中都有空条目。...因为JavaScript是在从国家/地区下拉列表中选择一个国家/地区后将信息加载到城市/下拉菜单中的一种,所以该测试将:选择每个国家/地区,并针对每个选定的国家/地区检查城市下拉列表。...在枚举中,这些存储为字符串属性的“ city ”列表。我们将通过首先向列表中添加一个空字符串来创建期望值列表。然后,我们将使用'addAll()'方法立即添加' 城市 '列表中的所有项目。

    3.2K10

    在测试自动化中使用Java枚举

    这意味着,从国家/地区下拉列表中,我们将选择与“ ES”枚举条目的“ 标签 ”属性相对应的值。这很容易检索:Country.ES.label。...此示例中的下拉列表的工作方式如下:未打开(未单击它们)时,“国家/地区”下拉列表显示为空选择,而“城市”下拉列表则完全为空。此时的城市下拉列表已禁用,您无法从中选择任何选项。...我们要编写的测试需要检查我们想要并已存储在Enum中的所有国家和城市是否存在于其相应的下拉列表中。还要记住,每个下拉列表中都有空条目。...因为JavaScript是在从国家/地区下拉列表中选择一个国家/地区后将信息加载到城市/下拉菜单中的一种,所以该测试将:选择每个国家/地区,并针对每个选定的国家/地区检查城市下拉列表。...在枚举中,这些存储为字符串属性的“ city ”列表。我们将通过首先向列表中添加一个空字符串来创建期望值列表。然后,我们将使用’addAll()‘方法立即添加’ 城市 '列表中的所有项目。

    2.7K20

    21个让React 开发更高效更有趣的工具

    完成用户界面后,可以选择导出到现有项目或新项目。 如果你选择导出到现有项目并选择根目录,它会将它们导出到....猴子补丁主要有以下几个用处: 在运行时替换方法、属性等 在不修改第三方代码的情况下增加原来不支持的功能 在运行时为内存中的对象增加patch而不是在磁盘的源代码中增加 这非常有用,不仅可以指导咱们修复项目的性能...这是react-test -library解决的一个问题,因为理想情况下,你只希望您的用户界面能够正常工作,并最终正确地渲染出来。 如何将数据获取到这些组件并不重要,只要它们仍然提供预期的输出即可。...列表中有很多很多React组件可供咱们使用,包括选项卡,按钮,图表,表格,导航栏,下拉列表,加载微调器,日期选择器,面包屑,图标,布局等。 10....Storybook Storybook 是一个轻松地构建UI组件的库。该工具启动一个实时开发服务器,支持开箱即用的热重载,你可以在其中独立地实时开发React组件。 这足以作为普通文档页面: 11.

    2.4K30

    前端基建处理之组件库优化方案

    接入storybook 初始化storybook 在原先的项目中执行命令初始化storybook的相关配置和依赖 npx -p @storybook/cli sb init --type vue 选择...在这个例子中,所有的 args 和 argTypes 都被传递给 MyButton 组件,你可以在 Storybook 的 UI 中调整它们的值。...在这个例子中,backgroundColor 的控件是一个颜色选择器,size 的控件是一个下拉列表,选项包括 'small'、'medium' 和 'large'。...,比如笔者用到的element ui,在storybook中需要引入这些element的组件,这里我们在.storybook/preview.js中引入element,参考如下 import ElementUI...PR进行审核 以下是笔者的搞的一个合码的模板,要求提交人按这种格式去填写 组件预览部署 在上面的步骤中我们已经接入了storybook,可以在本地预览,如果我们要单独把storybook单独部署一个到一个站点

    42010

    2020年值得你去试试的10个React开发工具

    因此,当为你的新React项目选择合适的IDE,合适的可视化工具甚至是合适的样式时,你都会有很多选择,你该怎么选择合适的?这是一件令人犯愁的事儿。...在本文中,我将介绍11个关于React的开发工具,以帮助你选择以及带你了解如何用它们来使你更充分的使用框架。 1....安装完成后,打开Chrome的开发人员工具你就能看到多出了Components和Profiler选项卡,“Components”选项能帮助你查看屏幕上组件列表以及从其他组件派生出的子组件,你能够选择检查甚至编辑组件的状态和属性...为了将Storybook安装到你现有的React项目中,你所要做的就是: $ npx -p @storybook/cli sb init 该命令将检查你项目的结构,并尝试了解你正在使用的视图层(因为Storybook...,如果你想了解如何将其用于自己的项目,可以随时查看它的完整文档。

    7.9K20

    Storybook 7 来了:迄今为止最大的更新

    我们的新 Framework API 会根据你的应用程序设置自动配置 Storybook,包括你选择的构建工具(Webpack 和 Vite)、渲染器(React、Vue、Angular、Svelte、...以组件为中心的自动文档生成 在 Storybook 7 中,你现在可以直接将文档附加到你的组件上。页面会出现在侧边栏中,与组件的 stories 一起显示,而不是以前的选项卡式用户界面。...为了适应一些重大变化,Storybook 将在 7.x 时间范围内继续支持 MDX1 的选择性支持,以确保我们的用户平稳过渡。...在官方文档里可以了解更多有关这些变化的信息。 改进的交互测试和代码覆盖率 Storybook 迅速成为测试组件的最佳选择。你可以通过向 story 附加 play 函数将其转换为测试。...通过Twitter或通过在下方邮件列表上注册,了解 Storybook 的最新消息。

    54130

    21个让React 开发更高效更有趣的工具

    完成用户界面后,可以选择导出到现有项目或新项目。 如果你选择导出到现有项目并选择根目录,它会将它们导出到./src/components,如下所示: ?...随着React hook的发布,这个应用程序需要更新做更多的工作。当然,开源是这个应用程序的好处,因为它使它有可能成为未来流行的开源存储库列表。 3....这是react-test -library解决的一个问题,因为理想情况下,你只希望您的用户界面能够正常工作,并最终正确地渲染出来。 如何将数据获取到这些组件并不重要,只要它们仍然提供预期的输出即可。...列表中有很多很多React组件可供咱们使用,包括选项卡,按钮,图表,表格,导航栏,下拉列表,加载微调器,日期选择器,面包屑,图标,布局等。 10....Storybook Storybook 是一个轻松地构建UI组件的库。该工具启动一个实时开发服务器,支持开箱即用的热重载,你可以在其中独立地实时开发React组件。 这足以作为普通文档页面: ?

    99220

    塔荐 | 2018 年最值得关注的 JavaScript 趋势

    谈到取悦开发者,不要忘了Facebook今年在BSD+Patents的收钱事件中遭遇的史诗般的失败,这惹恼了不少的开发者。...Angular剩下的拥护者已经表态说Angular会成为企业选择的JS框架,但这一断言尚有待证实,而且在2018年未必能得到证实。...映客创始人奉佑生坐不住了,“我是12月24号开始撒的,我以为就我一个人撒,没想到你们都撒,不管你们撒不撒,反正我准备了10个亿,我会一直撒的。”...你可能已经碰到过用Storybook来设计的开源项目了,但如果想自己看看它是怎么用的话,那就看看用Storybook设计的 Airbnb的日期选择器 。...Facebook开发的Flow是React开发者的优先选择,因为它很容易跟Babel集成,在React项目中也使用得很普遍。

    1.5K80

    如何在.NET电子表格应用程序中创建流程图

    在企业环境中,高管和经理利用流程图来规划业务流程,使他们能够识别瓶颈、优化生产力并增强决策能力……用例列表不胜枚举。然而,一个新的问题出现了,这些流程图由谁来维护?流程图如何共享或协作?...安装完之后,导航到项目Form1.cs的设计器: 在 VS Designer 中,找到工具箱中的FpSpread和FpSpreadDesigner组件。...然后,使用 Spread 设计器的右侧面板,从下拉列表中选择Spread,查找Features,展开它,并将EnhancedShapeEngine更改为“True”。...3.将形状添加到电子表格流程图 使用 Spread Designer 的“插入”选项卡,选择“形状”下拉列表。 添加流程图。...选择位置后,您将看到连接点变为绿色,表明线条已连接到形状。 连接完之后的样式: 6.将样式应用到形状 此步骤介绍如何应用样式主题以及如何将自定义样式应用于形状。

    26320

    2020年9月份Github上最热门的开源项目

    上开源的一本书籍,全书草稿已公布22章,通过这份它你将学到: 如何在计算机视觉、自然语言处理(NLP)、推荐系统、表格和时间序列数据分析中创建最先进的模型 如何使用全新的fastai v2库和PyTorch...深度学习的基础:什么是神经网络,它们是如何训练的,以及它们如何进行预测 为什么以及如何使用深度学习模型,以及如何使用这些知识来提高模型的准确性、速度和可靠性 如何将你的模型转换为实际的Web应用程序,...比如输入一段川普的视频,原本静止在画面中的史塔克们,也忍不住跟着动了起来。...你可选择锁同步的不同后台。...# storybook https://github.com/storybookjs/storybook Star 53010 Storybook是UI组件的开发环境,它允许开发者浏览组件库,查看每个组件的不同状态

    77130

    rancher教程(三): rancher 前端项目dashboard架构解析

    的项目中,还存储了一些文档,使用的storybook这个库来进行管理的 操作命令都在package.json中。...在package.json中我看到了"@novnc/novnc": "^1.2.0", 这个包,这个依赖包我直接讲解过,它是用于实现wbe vnc的功能的核心包。...可以看看我之前的一篇文章。 dashboard还使用d3做一些图表(竟然没有选择使用echarts),配合jquery完成一些dom操作。...日志,监控,备份,istio相关模块用到的图表 components 该目录存放了项目里绝大多数的业务组件以及公共组件。 config 目录里存放的都是定义的静态常量。比如一些下拉框的选项,类型。...edit,detail与list 是抽离出来的编辑页面,详情页,列表页组件。属于基础组件,适用性很强。 store 存放的是vuex中定义的状态。

    1.4K20

    ASP.NET中绑定枚举类型

    在项目开发中好多地方用了枚举,要把枚举显示到下拉列表框中我们平常的方法就是在下拉列表控件中一个一个添 在项目开发中好多地方用了枚举,要把枚举显示到下拉列表框中我们平常的方法就是在下拉列表控件中一个一个添加进去...这样做也行但如果我的枚举类型中的枚举值一旦改变,那么你就得满世界的去找然后再修改很麻烦。...这里我有反射动态的绑定枚举值就可以很方便的做修改了,代码如下: public enum Eume { 星期一, 星期二, 星期三, 星期四, 星期五 } 绑定方法: private void BinderDays...FieldInfo field = fields[i]; ListItem item=new ListItem(field.Name); days.Items.Add(item); } } OK这样就可以了,不过可惜的是枚举值显示转换不支持...string类型的,如果支持的话那就很爽了。

    1K10

    2018 年前端开发五大趋势

    经过深思熟虑且久经时间考验的Angular是一回事,但是Vue ……我们没想到这个开发环境成为前端技术工具列表中的佼佼者。 对于那些不熟悉Vue的读者,让我们简要介绍一下它的制胜之道。 ?...让我们举个具体的列子。想象一下,你需要在正在构建的社交网络框架中显示帖子列表,以及用户的喜好(点赞、收藏等)。在实现方面,这个例子很简单,你只需从下一个数据库端点发出请求。...特别是,得亏 StoryBook,你可以在独立的环境中设计和策划应用程序外的 UI 组件,并且在创建新的 UI 组件时它会发生变化。...它拥有几个状态(一个空列表,一个部分填充的列表,列表中所有元素都被填充,列表中仅有一些元素被填充),我们需要适配每个元素的 UI。...如前所述,React Storybook允许您在应用程序之外开发和测试UI组件,并允许团队中的其他开发人员继续使用它们。 也就是说,有时会加速界面开发的过程。

    2.9K40

    html.dropdownlistfor_html按钮样式

    //获取直属父级列表 var parents = _MemberEditDTOService.GetParents(); var parentsItems = parents.Result.Select...(enum)绑定到ListControl(DropDownList)控件 在开发过程中一些状态的表示使用到枚举类型,那么如何将枚举类型直接绑定到ListControl(DropDownList...)是本次的主题,废话不多说了,直接代码: 首先看工具类代码: /// DropDownList 下拉框选择改变,促发事件和防全局刷新(记录) 代码: DropDownList实现可输入可选择 1.js...值 把数据库绑定在dropdownlist中,然后把选中的dropdownlist的项的ID值保存在另外的一个数据库中.怎么取得dropdownlist选中的ID值呢??...this.DropDownLis … MVC5中后台提供Json,前台处理Json,绑定给Dropdownlist的例子 MVC5中后台提供Json,前台处理Json,绑定给Dropdownlist的例子

    4.6K20

    一网打尽枚举操作 .net core

    本文介绍如何使用枚举以及,如何将枚举类型更好的应用于项目中,看完本文可以有序的将项目中的枚举更容易的使用到每个角落。...,在项目中使用的话,一般都会将它作为某实体的一个属性,这个时候问题就来了,在页面里边我们是需要拿到与之相关的描述信息和对应的值作为一个下拉框或者checkbox让用户去选择,同时也不可以将Disable...通过viewbag将枚举的类中的每一项都加到枚举集合中返回给页面,在页面里边遍历,如果枚举类型很多,那么这类型的重复逻辑就会很多,非常的心烦。...如果可以将这些操作做一个封装,用一个接口可以返回所有枚举类型的相关信息,就好了,于是有了如下的做法 1 创建一个描述枚举的类 public class EnumModel {...,调用2中的方法,得到具体的返回信息 [Route("[controller]/{name}")] public IActionResult GetEnumList(string name

    95410
    领券