Écriture d'une API pour les composants React, partie 1: ne créez pas d'accessoires conflictuels

Écriture d'une API pour les composants React, partie 1: ne créez pas d'accessoires conflictuels

Écriture d'une API pour les composants React, partie 2: donner des noms au comportement, pas à l'interaction

Écriture d'une API pour les composants React, partie 3: l'ordre des accessoires est important

Écriture d'une API pour React Components, Partie 4: Méfiez-vous de l'Apropacalypse!

Écriture d'une API pour les composants React, partie 5: il suffit d'utiliser la composition

Nous écrivons API pour les composants React, partie 6: nous créons la communication entre les composants

Cet article est une traduction du premier article d'une série d'articles de l' API Writing good component , rédigé par @Sid . Lors de la traduction, dans toute situation incompréhensible, je serai guidé par la traduction officielle de la documentation React JS en russe


En ce qui concerne les composants React, vos accessoires sont votre API.


Une bonne API doit être compréhensible pour que le développeur lui-même puisse comprendre comment l'utiliser. Cela s'applique non seulement au développement de bibliothèques de composants, mais également au développement d'applications. Il est important que vous et votre équipe soyez à l'aise avec les composants et leurs API.


Cette série d'articles est inspirée d'articles et de conférences de Sebastian Markbåge , Brent Jackson , Jenn Creighton et A. Jesse Jiryu Davis .

Après avoir lu de nombreux articles et conférences, et après plus d'un an de conception de la conception du système cosmos , je suis arrivé à ces principes de développement.


Commençons par un simple.


Nous avons un bouton:


bouton-1


<Button>Click me</Button> 

Vous pouvez également avoir besoin du bouton principal, qui est nécessaire pour l'action principale sur la page. J'aimais construire l'API, comme si je pouvais dire - "Donnez-moi le bouton principal":


bouton-2


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

Maintenant, comme c'est généralement le cas avec les boutons, vous aurez besoin de quelques options supplémentaires. Voici un tableau de plusieurs accessoires pour les boutons:


prénomla descriptiontypevaleur par défaut
primarynécessaire pour indiquer l'action principalebooleanfaux
secondarypour des activités moins importantesbooleanfaux
destructiveBouton dangereux, auquel l'utilisateur doit faire attention, par exemple: supprimerbooleanfaux
linkbesoin d'afficher le bouton sous forme de lienbooleanfaux

Il existe plusieurs accessoires que vous pouvez utiliser pour modifier l'apparence d'un bouton. Que se passe-t-il si quelqu'un les utilise ensemble?


bouton-3


 <Button primary destructive> Click me </Button> 

Est-ce que certains gagneront? De quoi cela dépend-il? De la commande?


Pourquoi voudrait-on écrire ça? Existe-t-il un cas réel où vous devez dire "Donnez-moi un bouton destructive primary "?


Dans la plupart des cas, c'est une erreur. Mais si les développeurs doivent poser de telles questions (comme celles ci-dessus), ce n'est probablement pas une très bonne API.


Pour ceux qui décident de ce que sera l'API, il est important:


  1. minimiser les erreurs
  2. minimiser la confusion autour de l'API

Voici donc le conseil n ° 1: ne créez pas d'accessoires conflictuels.


Nous pouvons assez facilement corriger le code ci-dessus en utilisant prop qui vous permet d'obtenir une liste d'options. Appelez ça l' appearance


bouton-4


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

Nous pouvons ajouter une liste des options d' appearance prises en charge à l'aide de prop-types .


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

Maintenant, même si le développeur fait une erreur, il recevra un avertissement à ce sujet dans son outil de développement.


bouton-1


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

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

Cette astuce est assez facile à mettre en œuvre, mais elle rendra votre API beaucoup plus facile à utiliser (et à prendre en charge).


D'un traducteur - je mettrai à jour la liste des articles de cette série (au début) à mesure que d'autres articles seront traduits et que de nouveaux seront disponibles.

Source: https://habr.com/ru/post/fr459272/


All Articles