Schreiben einer API für React-Komponenten, Teil 1: Erstellen Sie keine widersprüchlichen Requisiten

Schreiben einer API für React-Komponenten, Teil 1: Erstellen Sie keine widersprüchlichen Requisiten

Schreiben einer API für Reaktionskomponenten, Teil 2: Geben Sie dem Verhalten Namen, nicht der Interaktion

Schreiben einer API für React-Komponenten, Teil 3: Die Reihenfolge der Requisiten ist wichtig

Schreiben einer API für React Components, Teil 4: Vorsicht vor der Apropacalypse!

Schreiben einer API für Reaktionskomponenten, Teil 5: Verwenden Sie einfach die Komposition

Wir schreiben API für React-Komponenten, Teil 6: Wir erstellen die Kommunikation zwischen Komponenten

Dieser Beitrag ist eine Übersetzung des ersten Artikels in einer Reihe von Artikeln der Writing Good Component API , die von @Sid verfasst wurde. Bei der Übersetzung werde ich mich in jeder unverständlichen Situation an der offiziellen Übersetzung der React JS-Dokumentation ins Russische orientieren


Wenn es um React-Komponenten geht, sind Ihre Requisiten Ihre API.


Eine gute API sollte verständlich sein, damit der Entwickler selbst herausfinden kann, wie er damit arbeiten soll. Dies gilt nicht nur für die Entwicklung von Komponentenbibliotheken, sondern auch für die Anwendungsentwicklung. Es ist wichtig, dass Sie und Ihr Team mit der Verwendung von Komponenten und deren APIs vertraut sind.


Diese Artikelserie ist inspiriert von Artikeln und Vorträgen von Sebastian Markbåge , Brent Jackson , Jenn Creighton und A. Jesse Jiryu Davis .

Nachdem ich viele Artikel + Vorträge gelesen und mehr als ein Jahr lang das Design des Kosmos- Systems entworfen hatte, kam ich zu diesen Entwicklungsprinzipien.


Beginnen wir mit einem einfachen.


Wir haben einen Knopf:


Taste-1


<Button>Click me</Button> 

Möglicherweise benötigen Sie auch die Hauptschaltfläche, die für die Hauptaktion auf der Seite benötigt wird. Früher habe ich die API gerne erstellt, als könnte ich sagen: "Gib mir den Hauptknopf":


Taste-2


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

Jetzt, wie es normalerweise bei Schaltflächen der Fall ist, benötigen Sie einige weitere Optionen. Hier ist eine Tabelle mit mehreren Requisiten für Knöpfe:


Vornamedie BeschreibungTypStandardwert
primarynotwendig, um die Hauptaktion anzuzeigenbooleanfalsch
secondaryfür Aktivitäten, die weniger wichtig sindbooleanfalsch
destructiveGefährliche Schaltfläche, auf die der Benutzer achten muss, zum Beispiel: Löschenbooleanfalsch
linkmüssen die Schaltfläche als Link anzeigenbooleanfalsch

Es gibt verschiedene Requisiten, mit denen Sie das Erscheinungsbild einer Schaltfläche ändern können. Was passiert, wenn jemand sie zusammen benutzt?


Taste-3


 <Button primary destructive> Click me </Button> 

Wird einer von ihnen gewinnen? Wovon hängt es ab? Aus der Bestellung?


Warum sollte jemand das schreiben? Gibt es einen realen Fall, in dem Sie sagen müssen "Geben Sie mir einen primary destructive Knopf"?


In den meisten Fällen ist dies ein Fehler. Aber wenn Entwickler überhaupt solche Fragen stellen müssen (wie die oben genannten), ist dies wahrscheinlich keine sehr gute API.


Für diejenigen, die entscheiden, wie die API aussehen soll, ist es wichtig:


  1. Fehler minimieren
  2. Minimieren Sie die Verwirrung um die API

Hier ist also Tipp 1: Erstellen Sie keine widersprüchlichen Requisiten.


Wir können den obigen Code ganz einfach mit prop reparieren, wodurch Sie eine Liste von Optionen erhalten. Nennen wir es appearance


Taste-4


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

Wir können eine Liste der unterstützten Optionen für das appearance mithilfe von Requisitentypen hinzufügen.


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

Selbst wenn der Entwickler einen Fehler macht, wird er in seinem Entwicklungstool darüber gewarnt.


Taste-1


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

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

Dieser Tipp ist recht einfach zu implementieren, erleichtert jedoch die Verwendung (und Unterstützung) Ihrer API erheblich.


Von einem Übersetzer - Ich werde die Liste der Artikel in dieser Reihe (zu Beginn) aktualisieren, sobald weitere Artikel übersetzt werden und neue verfügbar werden.

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


All Articles