13 - Styled-Components

Conhecendo o Styled Components

Afinal, o que é Styled Components? Trata-se de uma biblioteca (lib) que nos permite escrever códigos CSS dentro do JavaScript, mas, você deve estar se perguntando, oque eu ganho com isso? Dessa maneira não precisamos mais ficar importando nossos arquivos .css em nossas páginas e se um dia precisarmos utilizar esse mesmo componente em outro projeto, uma das maneiras seria basicamente copiar o arquivo .js.

Mão na massa

Pra instalação da nossa lib precisamos do seguinte comando no nosso terminal :

npm install --save styled-components

Após a instalação devemos importar essa nova lib para dentro do nosso código

-- import styled from 'styled-components'

Pronto!! Agora temos o poder de transformar nossas tags em componentes estilizáveis. Pra isso criamos uma nova const com as especificidades que desejamos pra depois substituírmos a própria tag pelo nosso componente

Exemplo utilizando Styled-components:

import React, { Component } from 'react' import styled from 'styled-components' // O nome do novo componente deve sempre começar com letra maiúscula const BoxH1 = styled.h1` color : red; ` class App extends Component { render(){ return( <div> <BoxH1>Eu sou um h1 estilizado</BoxH1> </div> ) } } export default App // No exemplo acima teremos o seguinte retorno: // Eu sou um h1 estilizado *em cor vermelha

GlobalStyle

Da mesma forma que utiliziamos componentes estilizados, também podemos estilizar elementos maiores e de forma global, pra isso precisamos importar nosso GlobalStyle diretamente do styled-components:

-- import {createGlobalStyle} from 'styled-components'

import React, { Component } from 'react' import styled from 'styled-components' import {createGlobalStyle} from 'styled-components' // O nome do novo componente deve sempre começar com letra maiúscula const BoxH1 = styled.h1` color : red; ` const GlobalStyle = createGlobalStyle` body{ background-color: gray } ` class App extends Component { render(){ return( <div> <GlobalStyle/> <BoxH1>Eu sou um h1 estilizado</BoxH1> </div> ) } } export default App // No exemplo acima teremos o retorno da body com a cor de fundo cinza.