为React组件编写API,第1部分:不要创建冲突的道具

为React组件编写API,第1部分:不要创建冲突的道具

编写用于React组件的API,第2部分:为行为命名,而非交互

为React组件编写API,第3部分:道具的顺序很重要

编写用于React组件的API,第4部分:当心提示!

编写用于React组件的API,第5部分:使用组合

我们为React组件编写API,第6部分:在组件之间创建通信

这篇文章是@Sid 编写的Writing good component API系列文章中第一篇文章的翻译。 在任何难以理解的情况下进行翻译时,我都会以React JS文档官方翻译为俄语为指导


对于React组件,您的道具就是您的API。


一个好的API应该是可以理解的,以便开发人员自己可以弄清楚如何使用它。 这不仅适用于组件库的开发,还适用于应用程序的开发。 重要的是,您和您的团队应该习惯使用组件及其API。


该系列文章的灵感来自塞巴斯蒂安·马克伯格SebastianMarkbåge)布伦特·杰克逊Brent Jackson)珍妮·克雷顿Jenn Creighton)A.杰西·杰鲁·戴维斯(A. ​​Jesse Jiryu Davis)的文章和演讲。

在阅读了许多文章和讲座之后,并在设计了超过一年的波斯菊系统设计之后,我逐渐了解了这些开发原则。


让我们从一个简单的开始。


我们有一个按钮:


按钮1


<Button>Click me</Button> 

您可能还需要主按钮,该按钮是页面上的主要操作所必需的。 我曾经喜欢构建API,就好像我可以说“给我主按钮”一样:


按钮2


 <Button>Click me</Button> <Button primary>Click me</Button> 

现在,与通常使用按钮的情况一样,您将需要更多选项。 这是几个按钮道具的表格:


说明类型预设值
primary指示主要动作所必需boolean错误的
secondary对于不太重要的活动boolean错误的
destructive用户必须注意的危险按钮,例如:删除boolean错误的
link需要将按钮显示为链接boolean错误的

您可以使用多种道具来更改按钮的外观。 如果有人一起使用它们会怎样?


按钮3


 <Button primary destructive> Click me </Button> 

他们会赢吗? 它取决于什么? 从命令?


为什么有人会写这个? 当您需要说“给我一个primary destructive按钮”时,是否存在真实情况?


在大多数情况下,这是一个错误。 但是,如果开发人员根本不得不问这样的问题(例如上述问题),那么这可能不是一个很好的API。


对于那些决定API是什么的人来说,重要的是:


  1. 减少错误
  2. 最小化API的混乱

因此,这里是技巧1: 不要创建冲突的道具。


我们可以使用prop轻松修复以上代码,该代码可以让您获得选项列表。 称之为appearance


按钮4


 <Button appearance="default">Click me</Button> <Button appearance="primary">Click me</Button> <Button appearance="destructive">Click me</Button> 

我们可以使用prop-types添加支持的appearance选项列表。


 Button.PropTypes = { appearance: PropTypes.oneOf(['default', 'primary', 'secondary', 'link', 'destructive']) } 

现在,即使开发人员犯了一个错误,他也将在其开发工具中收到关于此的警告。


按钮1


 <Button appearance="danger">Click me</Button> 

 :   :  `prop` `appearance`   `danger`   `Button`,      : `["default", "primary", "secondary", "link", "destructive"]` 

这个技巧很容易实现,但是它将使您的API更加易于使用(和支持)。


通过翻译-随着更多文章的翻译和新文章的发布,我将在本系列文章的开头更新文章列表。

Source: https://habr.com/ru/post/zh-CN459272/


All Articles