Uma das coisas que muito tem se falado, enquanto desenvolvendo aplicações com React, é sobre styled components
Styled components são componentes onde criamos o CSS no próprio arquivo do componente, o arquivo JS.
Com isso conseguimos obter algumas vantagens em diversos quesitos, tais como:
Carregamento automático do CSS crítico, isso é, os componentes são renderizados com a página e são injetados apenas o CSS que realmente será utilizado, nada mais! Ajudando em performance, visto que os usuários carregarão apenas o necessário.
Sem problemas com nomes de classes! Styled-componentes geram nomes de classes automaticamente, sem preocupação em gerar nomes duplicados.
- Fácil remoção de CSS, visto que todo o CSS fica, normalmente, no próprio arquivo JS, então você encontra fácil o que precisa remover e também consegue facilmente realizar a manutenção e adição de novas funcionalidades e estilização, baseado em variáveis que você passa para seu componente.
Entre outras facilidades!
Mas vamos para a parte prática, como podemos começar utilizar?
Primeiramente, instale-o em seu projeto:
1 | npm install --save styled-components |
O stlyed-component utiliza template literal para estilizar os componentes.
Caso você não saiba o que é isso, falamos sobre essa funcionalidade há um tempo atrás neste post aqui
Então vamos lá, vamos construir nosso primeiro stlyed-component!
Teremos como base o seguinte componente, bem simples:
1 | render( |
Agora, vamos criar o estilo para a nossa div
e o nosso h1
:
1 | // Criamos o componente titulo |
Agora que criamos os nossos estilos, devemos substituir as tags que estilizamos pelo nome do estilo que criamos, então o nosso novo HTML
ficaria da seguinte forma:
1 | render( |
Bem simples, não é mesmo?
O resultado final do nosso componente então, ficou assim:
1 | // Criamos o componente titulo |
Mas stlyed-component não se limita em estilizar apenas componentes que você criou, também podemos estilizar componentes de outras bibliotecas! Podemos, por exemplo, estilizar uma tab
do react-bootstrap, da seguinte forma:
1 | const StyledTab = styled(Tab)` |
A única diferença é que, quando estilizamos um componente já existente, devemos passar ele entre “ () “, ficando styled(Componente)