deco.cx v2 preview Ver a documentação da v2

Deco
Pt

Standard data types

Aprenda como criar componentes universais para que possam ser usados em qualquer lugar

Componentes universais são componentes que não dependente de uma fonte específica de dado para determinar seu comportamento. A única coisa que lhes importa é o formato do dado, isso geralmente acontece quando o componente é feito para ser usado em vários lugares diferentes (inclusive há possibilidade entre usa-lo entre sites distintos) sem que seja necessário ler de alguma API específica, ou seja, sem nenhuma dependência externa (a.k.a implicit dependency).

Um exemplo de um componente universal é a ProductShelf da loja Fashion, vamos dar uma olhada nele;

 export interface Props {
  title: string;
  products: Product[] | null;
  itemsPerPage?: number;
}

function ProductShelf({
  title,
  products,
}: Props) {
  // ...implementation
} 

Perceba que, apesar da ProductShelf depender de uma lista de “Product” pra funcionar, ela não depende de qual é a fonte do dado que vai prover essa informação. Isso só é possível porque o tipo Product é um tipo criado por uma entidade central no schema.org . Uma outra forma possível de pensar nossa ProductShelf seria escrever um Inline Loader e fazer com que esse inline loader leia os dados da API de um e-commerce em específico (e.g Shopify) e só então renderizar a ProductShelf.

Isso é totalmente possível e factível, no entanto, deve-se atentar que quando isso é feito, o nosso usuário de negócio perde a possibilidade de, por exemplo, trocar a fonte de dados de Shopify para VTEX, o que é uma feature bastante poderosa para evitar lock-in em uma plataforma especifica. Nesse sentido, um component universal faz com que as dependencias nos tipo sejam invertidas, ao invés do componente depender da API, na verdade o componente depende apenas do formato do dado e permite com que loaders sejam implementados de forma a retornarem esse tipo em comum, fazendo com que seja possível escolher o dado loader ao configurar as propriedades do componente no Editor Admin.

image

De fato, nossa ProductShelf possui ao menos quatro implementações distintas para ler produtos de APIs e até mesmo plataformas de e-commerce distintas, são elas: VNDAProductList, VTEXProductList, VTEXLegacyProductList, It is ShopifyProductList

Isso faz com que Universal Components sejam algo que tem um valor e usabilidade muito grande comparado a componentes que dependem de dados de APIs!

Leitura sugerida

Componentes universais faz com que a interoperabilidade entre plataformas seja possível e o mais fácil possível. Leia mais sobre como criar loaders abaixo nos nossos tutoriais;

Found an error or want to improve this page?

Edit this page