Como usar React Hooks com Emoção?

Nov 17, 2025Deixe um recado

Como fornecedor experiente de Hooks, testemunhei o poder transformador dos React Hooks no cenário de desenvolvimento web. Quando combinado com Emotion, uma popular biblioteca CSS-in-JS, o resultado é uma forma dinâmica e eficiente de construir interfaces de usuário. Nesta postagem do blog, compartilharei como você pode aproveitar React Hooks com Emotion para criar aplicativos impressionantes e de fácil manutenção.

Compreendendo os ganchos de reação e a emoção

Antes de nos aprofundarmos em sua combinação, vamos entender brevemente o que são React Hooks e Emotion.

React Hooks são um recurso introduzido no React 16.8 que permite usar o estado e outros recursos do React sem escrever uma classe. Ganchos comousarEstado,useEfeito, euseContextrevolucionaram a forma como os desenvolvedores escrevem componentes funcionais, tornando-os mais poderosos e flexíveis.

Emotion, por outro lado, é uma biblioteca CSS-in-JS que permite escrever estilos CSS diretamente em seu código JavaScript. Ele fornece uma integração perfeita com o React, permitindo criar estilos dinâmicos e com escopo definido para seus componentes.

Configurando o Projeto

Para começar, você precisará criar um novo projeto React. Você pode usar Create React App para configurar rapidamente uma estrutura básica de projeto.

npx create-react-app react-hooks-emotion-demo cd react-hooks-emotion-demo

Em seguida, instale o Emotion e suas ligações React.

npm instalar @emotion/react @emotion/styled

Usando useState com emoção

OusarEstadohook é um dos ganchos mais comumente usados ​​no React. Ele permite adicionar estado a um componente funcional. Vamos criar um exemplo simples onde usamosusarEstadopara alternar a cor de um botão usando estilos Emotion.

importar React, {useState} de 'react'; importar o estilo de '@emotion/styled'; const StyledButton = styled.button` cor de fundo: ${props => (props.isActive ? 'blue' : 'gray')}; cor: branco; preenchimento: 10px 20px; fronteira: nenhuma; cursor: ponteiro; `; const ColorToggleButton = () => { const [isActive, setIsActive] = useState(false); const handleClick = () => { setIsActive(!isActive); }; return ( <StyledButton isActive={isActive} onClick={handleClick}> {isActive ? 'Ativo' : 'Inativo'} </StyledButton> ); }; exportar ColorToggleButton padrão;

Neste exemplo, definimos umBotão estilizadocomponente usando Emotion'sestilizadofunção. A cor de fundo do botão é determinada peloestá ativoadereço. Nós usamos ousarEstadogancho para gerenciar oestá ativoestado e alterne-o quando o botão for clicado.

0154_20153_3

useEffect com emoção para efeitos colaterais

OuseEfeitohook é usado para realizar efeitos colaterais em componentes funcionais. Os efeitos colaterais podem incluir busca de dados, assinaturas ou manipulações de DOM. Vamos criar um exemplo onde usamosuseEfeitopara alterar a cor de fundo de um componente após um certo tempo.

importar React, { useState, useEffect } de 'react'; importar o estilo de '@emotion/styled'; const StyledDiv = styled.div` cor de fundo: ${props => props.bgColor}; preenchimento: 20px; cor: branco; `; const ColorChangeDiv = () => { const [bgColor, setBgColor] = useState('vermelho'); useEffect(() => { const timer = setTimeout(() => { setBgColor('green'); }, 3000); return () => clearTimeout(timer); }, []); return <StyledDiv bgColor={bgColor}>A cor mudará em 3 segundos...</StyledDiv>; }; exportar ColorChangeDiv padrão;

Neste exemplo, usamos ouseEfeitogancho para definir um cronômetro que altera a cor de fundo doStyleDivcomponente após 3 segundos. Também limpamos o cronômetro usando a função de retorno deuseEfeitopara evitar vazamentos de memória.

useContext com Emotion para estilos globais

OuseContexthook permite que você compartilhe dados entre componentes sem ter que passar acessórios manualmente por todos os níveis da árvore de componentes. Vamos criar um exemplo onde usamosuseContextpara aplicar estilos globais usando Emotion.

importar React, {createContext, useContext} de 'react'; importar o estilo de '@emotion/styled'; const ThemeContext = createContext(); const ThemeProvider = ({ filhos }) => { const tema = { cor primária: 'roxo', cor secundária: 'rosa' }; return ( <ThemeContext.Provider value={theme}>{children}</ThemeContext.Provider> ); }; const StyledHeading = styled.h1` cor: ${props => props.theme.primaryColor}; `; const ThemeAwareComponent = () => { const tema = useContext(ThemeContext); return <StyledHeading theme={theme}>Este é um título temático</StyledHeading>; }; const App = () => { return ( <ThemeProvider> <ThemeAwareComponent /> </ThemeProvider> ); }; exportar aplicativo padrão;

Neste exemplo, criamos umTemaContextousando ocriarContextofunção. Fornecemos um objeto de tema ao contexto usando oProvedor de temacomponente. OTítulo estilizadoO componente usa o objeto do tema passado pelo contexto para definir sua cor.

Casos de uso avançados

Ganchos personalizados com emoção

Você também pode criar ganchos personalizados que combinam estilos React Hooks e Emotion. Vamos criar um gancho personalizado que gerencia a visibilidade de um componente e aplica os estilos Emotion de acordo.

importar React, {useState} de 'react'; importar o estilo de '@emotion/styled'; const useVisibility = () => { const [isVisible, setIsVisible] = useState(false); const toggleVisibility = () => { setIsVisible(!isVisible); }; return { isVisible, toggleVisibility }; }; const StyledBox = styled.div` display: ${props => (props.isVisible ? 'block' : 'none')}; cor de fundo: cinza claro; preenchimento: 20px; `; const VisibleBox = () => { const { isVisible, toggleVisibility } = useVisibility(); return ( <> <button onClick={toggleVisibility}>Toggle Visibility</button> <StyledBox isVisible={isVisible}>Esta caixa pode ser alternada</StyledBox> </> ); }; exportar VisibleBox padrão;

Neste exemplo, criamos um gancho personalizadouseVisibilidadeque gerencia o estado de visibilidade de um componente. OCaixa estilizadacomponente usa oéVisívelprop para determinar se ele deve ser exibido ou oculto.

Conclusão

Combinar React Hooks com Emotion oferece uma maneira poderosa e flexível de construir interfaces de usuário. React Hooks fornecem recursos de gerenciamento de estado e efeitos colaterais, enquanto Emotion permite que você escreva estilos dinâmicos e com escopo definido diretamente em seu código JavaScript. Esteja você criando um botão simples ou um aplicativo complexo, a combinação dessas duas tecnologias pode ajudá-lo a criar um código mais sustentável e eficiente.

Se você estiver interessado em explorar mais tipos de ganchos para seus projetos, oferecemos uma ampla variedade de ganchos de alta qualidade. Confira nossoGanchos de SlatwalleGanchos para pranchas de madeirapara diferentes aplicações.

Se você deseja adquirir ganchos para o seu negócio ou projeto, estamos aqui para atendê-lo. Entre em contato conosco para discutir suas necessidades e obter uma solução personalizada.

Referências

  • Documentação oficial do React
  • Documentação oficial da emoção