É muito comum uma certa resistência ao uso do Styled Components, eu mesmo não dava o braço a torcer e demorei a utilizar essa biblioteca. Hoje em dia eu não desenvolvo sem ela.
O objetivo desse post será te convencer a dar uma chance para o CSS-in-JS e mostrar um pouco das vantagens de se utilizar o Styled Components. Vamos nessa!
Trata-se de uma biblioteca que nos permite escrever códigos CSS dentro do JavaScript, evitando a importação de arquivos .css
.
Por se tratar de uma biblioteca, devemos instalar com o npm
ou o yarn
. Exemplo utilizando o yarn
:
yarn add styled-components
Como o próprio nome já diz, a biblioteca nos permite criar componentes estilizados. Para começarmos devemos importá-la no nosso projeto.
import styled from "styled-components";
Com o pacote importado, basta criarmos um componente informando o styled
seguido da tag HTML que desejamos criar, e de dois backticks, onde colocaremos o CSS.
const MeuComponente = styled.div`
background: grey;
width: 100px;
height: 200px;
`
Com o MeuComponente
criado, podemos utilizá-lo normalmente no nossa aplicação, como uma div:
return (
<MeuComponente>
Conteúdo
</MeuComponente>
)
Por padrão, ao utilizarmos o Styled Components, criamos um arquivo separado para os componentes personalizados, normalmente chamado styles.js
. Nesse arquivo nós criamos os componentes e os exportamos:
import styled from "styled-components";
const MeuComponente = styled.div`
background: grey;
width: 100px;
height: 200px;
`
export const MeuBotao = styled.button`
background: green;
width: 50px;
height: 22px;
border: none;
`
Agora, para utilizá-los em outros arquivos, basta fazermos a sua importação:
import React from 'react'
import { MeuComponente, MeuBotao } from './styles.js'
const Page = () => {
<MeuComponente>
<MeuBotao onClick={() => {}}/>
</MeuComponente>
}
export default Page;
Como podemos perceber, o uso de componentes estilizados torna a estrutura da página muito mais semântica!
É muito comum precisarmos utilizar componentes com estilos semelhantes, e para evitar a necessidade de repetirmos o código, o StyledComponentes nos permite herdar o estilo de um objeto.
Por exemplo, vamos supor que criaremos dois botões em uma tela, sendo que a única diferença entre eles é a cor.
const PrimeiroBotao = styled.button`
width: 100px;
height: 22px;
border: none;
border-radius: 2px;
background-color: red;
padding: 5px 10px;
`
Claro que copiar e colar esse código para criar o segundo botão não nos tomaria muito tempo. Porém, podemos fazer isso de forma muito mais limpa:
const SegundoBotao = styled(PrimeiroBotao)`
background-color: green;
`
Ou seja, o SegundoBotao
possui todas as propriedades do PrimeiroBotao
, alterando apenas a cor do background.
Assim como o CSS puro, o StyledComponents nos permite aninhar elementos estruturais e manipular o filho a partir do pai:
return (
<MeuComponente>
<span> Texto a modificar </span>
</MeuComponente>
)
const MeuComponent = styled.div`
width: 100px;
height: 100px;
span {
color: red;
}
`
No exemplo acima modificamos a cor do span para vermelho.
Com a biblioteca, podemos utilizar tudo que o CSS oferece aliado com o JavaScript! Assim, podemos trabalhar com valores do próprio JS, tornar o código mais semântico e com escopos mais definidos.
O começo com o Styled Componentes pode ser um pouco estranho, mas a curva de aprendizado é super baixa e logo é possível perceber os seus benefícios. Quem quiser saber mais sobre as features dessa biblioteca, basta ler a sua documentação.
Se surgirem dúvidas ou sugestões, não deixem de mandar aqui nos comentários!