Come utilizzare i React Hooks con le Emozioni?

Nov 17, 2025Lasciate un messaggio

In qualità di fornitore esperto di Hooks, ho assistito al potere di trasformazione di React Hooks nel panorama dello sviluppo web. Se combinato con Emotion, una popolare libreria CSS-in-JS, il risultato è un modo dinamico ed efficiente per creare interfacce utente. In questo post del blog, condividerò come sfruttare React Hooks con Emotion per creare applicazioni straordinarie e gestibili.

Comprendere i ganci di reazione e le emozioni

Prima di approfondire la loro combinazione, capiamo brevemente cosa sono React Hooks ed Emotion.

I React Hooks sono una funzionalità introdotta in React 16.8 che ti consente di utilizzare lo stato e altre funzionalità di React senza scrivere una classe. Ganci comeuseState,useEffect, EuseContexthanno rivoluzionato il modo in cui gli sviluppatori scrivono componenti funzionali, rendendoli più potenti e flessibili.

Emotion, d'altra parte, è una libreria CSS-in-JS che ti consente di scrivere stili CSS direttamente nel tuo codice JavaScript. Fornisce una perfetta integrazione con React, consentendoti di creare stili dinamici e con ambito per i tuoi componenti.

Impostazione del progetto

Per iniziare, dovrai creare un nuovo progetto React. Puoi utilizzare Crea app React per impostare rapidamente una struttura di progetto di base.

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

Successivamente, installa Emotion e i suoi collegamenti React.

npm installa @emotion/react @emotion/styled

Utilizzo di useState con Emotion

ILuseStatehook è uno degli hook più comunemente usati in React. Ti consente di aggiungere uno stato a un componente funzionale. Creiamo un semplice esempio in cui utilizziamouseStateper attivare/disattivare il colore di un pulsante utilizzando gli stili Emozione.

importa React, { useState } da 'react'; importa stili da '@emotion/styled'; const StyledButton = styled.button` background-color: ${props => (props.isActive ? 'blue': 'gray')}; colore: bianco; imbottitura: 10px 20px; bordo: nessuno; cursore: puntatore; `; const ColorToggleButton = () => { const [isActive, setIsActive] = useState(false); const handleClick = () => { setIsActive(!isActive); }; return ( <StyledButton isActive={isActive} onClick={handleClick}> {isActive ? 'Attivo' : 'Inattivo'} </StyledButton> ); }; esporta ColorToggleButton predefinito;

In questo esempio definiamo aPulsante in stilecomponente che utilizza Emotionin stilefunzione. Il colore dello sfondo del pulsante è determinato daè attivopuntello. Usiamo iluseStategancio per gestire ilè attivostato e attivarlo quando si fa clic sul pulsante.

0154_20153_3

useEffect con Emozione per gli effetti collaterali

ILuseEffectil gancio viene utilizzato per eseguire effetti collaterali nei componenti funzionali. Gli effetti collaterali possono includere il recupero dei dati, gli abbonamenti o le manipolazioni del DOM. Creiamo un esempio in cui usiamouseEffectper cambiare il colore di sfondo di un componente dopo un certo tempo.

importa React, { useState, useEffect } da 'react'; importa stili da '@emotion/styled'; const StyledDiv = styled.div` colore di sfondo: ${props => props.bgColor}; imbottitura: 20px; colore: bianco; `; const ColorChangeDiv = () => { const [bgColor, setBgColor] = useState('red'); useEffect(() => { const timer = setTimeout(() => { setBgColor('green'); }, 3000); return () => clearTimeout(timer); }, []); return <StyledDiv bgColor={bgColor}>Il colore cambierà tra 3 secondi...</StyledDiv>; }; esporta ColorChangeDiv predefinito;

In questo esempio utilizziamo il fileuseEffectgancio per impostare un timer che cambia il colore di sfondo delStyledDivcomponente dopo 3 secondi. Puliamo anche il timer utilizzando la funzione return diuseEffectper evitare perdite di memoria.

utilizzareContesto con emozione per stili globali

ILuseContexthook ti consente di condividere i dati tra i componenti senza dover passare manualmente gli oggetti di scena attraverso ogni livello dell'albero dei componenti. Creiamo un esempio in cui utilizziamouseContextper applicare stili globali utilizzando Emotion.

importa React, { createContext, useContext } da 'react'; importa stili da '@emotion/styled'; const ThemeContext = createContext(); const ThemeProvider = ({ children }) => { const theme = { primarioColor: 'viola', secondarioColore: 'rosa' }; return ( <ThemeContext.Provider value={tema}>{children}</ThemeContext.Provider> ); }; const StyledHeading = styled.h1` color: ${props => props.theme.primaryColor}; `; const ThemeAwareComponent = () => { const tema = useContext(ThemeContext); return <StyledHeading theme={theme}>Questa è un'intestazione a tema</StyledHeading>; }; const App = () => { return ( <ThemeProvider> <ThemeAwareComponent /> </ThemeProvider> ); }; esportare l'app predefinita;

In questo esempio creiamo un fileContesto tematicoutilizzando ilcreateContextfunzione. Forniamo un oggetto tematico al contesto utilizzando il metodoThemeProvidercomponente. ILIntestazione con stileIl componente utilizza l'oggetto del tema passato attraverso il contesto per impostarne il colore.

Casi d'uso avanzati

Ganci personalizzati con emozione

Puoi anche creare hook personalizzati che combinano gli stili React Hooks ed Emotion. Creiamo un hook personalizzato che gestisce la visibilità di un componente e applica gli stili Emotion di conseguenza.

importa React, { useState } da 'react'; importa stili da '@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')}; colore di sfondo: grigio chiaro; imbottitura: 20px; `; const VisibleBox = () => { const { isVisible, toggleVisibility } = useVisibility(); return ( <> <button onClick={toggleVisibility}>Attiva/disattiva visibilità</button> <StyledBox isVisible={isVisible}>Questa casella può essere attivata/disattivata</StyledBox> </> ); }; esporta VisibleBox predefinito;

In questo esempio creiamo un hook personalizzatoutilizzare Visibilitàche gestisce lo stato di visibilità di un componente. ILStyledBoxil componente utilizza il fileèVisibileprop per determinare se deve essere visualizzato o nascosto.

Conclusione

La combinazione di React Hooks con Emotion offre un modo potente e flessibile per creare interfacce utente. I React Hooks forniscono funzionalità di gestione dello stato e di effetti collaterali, mentre Emotion ti consente di scrivere stili dinamici e con ambito direttamente nel tuo codice JavaScript. Che tu stia creando un pulsante semplice o un'applicazione complessa, la combinazione di queste due tecnologie può aiutarti a creare un codice più gestibile ed efficiente.

Se sei interessato a esplorare più tipi di ganci per i tuoi progetti, offriamo un'ampia gamma di ganci di alta qualità. Dai un'occhiata al nostroGanci per pareti a dogheEGanci per pannelli foratiper diverse applicazioni.

Se stai cercando di acquistare ganci per la tua attività o progetto, siamo qui per aiutarti. Contattaci per discutere le tue esigenze e ottenere una soluzione personalizzata.

Riferimenti

  • Reagire alla documentazione ufficiale
  • Documentazione ufficiale sulle emozioni