Escrevendo uma API para componentes React, parte 1: não crie objetos conflitantes

Escrevendo uma API para componentes React, parte 1: não crie objetos conflitantes

Escrevendo uma API para componentes de reação, parte 2: dê nomes ao comportamento, não à interação

Escrevendo uma API para componentes React, parte 3: a ordem dos adereços é importante

Escrevendo uma API para reagir componentes, parte 4: Cuidado com o Apropacalypse!

Escrevendo uma API para reagir componentes, parte 5: apenas usar composição

Escrevemos API para componentes React, parte 6: criamos comunicação entre componentes

Esta postagem é uma tradução do primeiro artigo de uma série de artigos da API Writing good component , de autoria de @Sid . Ao traduzir, em qualquer situação incompreensível, serei guiado pela tradução oficial da documentação do React JS para o russo


Quando se trata de componentes React, seus acessórios são sua API.


Uma boa API deve ser compreensível para que o próprio desenvolvedor possa descobrir como trabalhar com ela. Isso se aplica não apenas ao desenvolvimento de bibliotecas de componentes, mas também ao desenvolvimento de aplicativos. É importante que você e sua equipe se sintam à vontade usando componentes e suas APIs.


Esta série de artigos é inspirada em artigos e palestras de Sebastian Markbåge , Brent Jackson , Jenn Creighton e A. Jesse Jiryu Davis .

Depois de ler muitos artigos + palestras e depois de mais de um ano projetando o design do sistema cosmos , cheguei a esses princípios de desenvolvimento.


Vamos começar com um simples.


Temos um botão:


button-1


<Button>Click me</Button> 

Você também pode precisar do botão principal, necessário para a ação principal na página. Eu gostava de criar a API, como se eu pudesse dizer - "Dê-me o botão principal":


botão-2


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

Agora, como geralmente acontece com os botões, você precisará de mais algumas opções. Aqui está uma tabela de vários acessórios para botões:


primeiro nomea descriçãotipovalor padrão
primarynecessário indicar a ação principalbooleanfalsa
secondarypara atividades menos importantesbooleanfalsa
destructiveBotão perigoso, para o qual o usuário deve ter cuidado, por exemplo: excluirbooleanfalsa
linkprecisa exibir o botão como um linkbooleanfalsa

Existem vários acessórios que você pode usar para alterar a aparência de um botão. O que acontece se alguém os usa juntos?


botão-3


 <Button primary destructive> Click me </Button> 

Algum deles ganhará? Do que isso depende? Do pedido?


Por que alguém escreveria isso? Existe um caso real em que você precisa dizer "Dê-me um botão destructive primary "?


Na maioria dos casos, isso é um erro. Mas se os desenvolvedores precisam fazer essas perguntas (como as acima), provavelmente essa não é uma API muito boa.


Para quem decide qual será a API, é importante:


  1. minimizar erros
  2. minimizar a confusão em torno da API

Então, aqui está a dica 1: não crie objetos conflitantes.


Podemos facilmente corrigir o código acima usando prop, que permite obter uma lista de opções. Chame de appearance


botão-4


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

Podemos adicionar uma lista de opções suportadas para appearance usando prop-types .


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

Agora, mesmo que o desenvolvedor cometa um erro, ele receberá um aviso sobre isso em sua ferramenta de desenvolvimento.


button-1


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

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

Essa dica é muito fácil de implementar, mas tornará sua API muito mais fácil de usar (e oferecer suporte).


De um tradutor - atualizarei a lista de artigos desta série (no início) à medida que mais artigos forem traduzidos e novos forem disponibilizados.

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


All Articles