Hur använder man React Hooks med känslor?

Nov 17, 2025Lämna ett meddelande

Som en erfaren Hooks-leverantör har jag sett den transformerande kraften hos React Hooks i webbutvecklingslandskapet. I kombination med Emotion, ett populärt CSS-in-JS-bibliotek, blir resultatet ett dynamiskt och effektivt sätt att bygga användargränssnitt. I det här blogginlägget kommer jag att dela hur du kan utnyttja React Hooks with Emotion för att skapa fantastiska och underhållbara applikationer.

Förstå React Hooks och känslor

Innan vi går in i deras kombination, låt oss kort förstå vad React Hooks och Emotion är.

React Hooks är en funktion som introduceras i React 16.8 som låter dig använda tillstånd och andra React-funktioner utan att skriva en klass. Krokar somuseState,useEffect, ochanvändContexthar revolutionerat hur utvecklare skriver funktionella komponenter, vilket gör dem mer kraftfulla och flexibla.

Emotion, å andra sidan, är ett CSS-in-JS-bibliotek som gör att du kan skriva CSS-stilar direkt i din JavaScript-kod. Det ger en sömlös integration med React, så att du kan skapa dynamiska och omfångade stilar för dina komponenter.

Konfigurera projektet

För att komma igång måste du skapa ett nytt React-projekt. Du kan använda Create React App för att snabbt sätta upp en grundläggande projektstruktur.

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

Installera sedan Emotion och dess React-bindningar.

npm installera @emotion/react @emotion/styled

Använda useState med känslor

DeuseStatekrok är en av de mest använda krokarna i React. Det låter dig lägga till tillstånd till en funktionell komponent. Låt oss skapa ett enkelt exempel där vi använderuseStateför att växla färg på en knapp med hjälp av Emotion-stilar.

importera React, { useState } från 'react'; importera stil från '@emotion/styled'; const StyledButton = styled.button` bakgrundsfärg: ${props => (props.isActive ? 'blue' : 'grå')}; färg: vit; stoppning: 10px 20px; gräns: ingen; markör: pekare; `; const ColorToggleButton = () => { const [isActive, setIsActive] = useState(false); const handleClick = () => { setIsActive(!isActive); }; return ( <StyledButton isActive={isActive} onClick={handleClick}> {isActive ? 'Active' : 'Inactive'} </StyledButton> ); }; export standard ColorToggleButton;

I det här exemplet definierar vi aStyled Buttonkomponent som använder Emotion'sstyladfungera. Knappens bakgrundsfärg bestäms avär Aktivstötta. Vi använderuseStatekrok för att hanteraär Aktivläge och växla det när du klickar på knappen.

0154_20153_3

useEffect med Emotion för biverkningar

DeuseEffectkrok används för att utföra biverkningar i funktionella komponenter. Biverkningar kan inkludera datahämtning, prenumerationer eller DOM-manipulationer. Låt oss skapa ett exempel där vi använderuseEffectför att ändra bakgrundsfärgen för en komponent efter en viss tid.

importera React, { useState, useEffect } från 'react'; importera stil från '@emotion/styled'; const StyledDiv = styled.div` bakgrundsfärg: ${props => props.bgColor}; stoppning: 20px; färg: vit; `; const ColorChangeDiv = () => { const [bgColor, setBgColor] = useState('red'); useEffect(() => { const timer = setTimeout(() => { setBgColor('green'); }, 3000); return () => clearTimeout(timer); }, []); return <StyledDiv bgColor={bgColor}>Färgen kommer att ändras inom 3 sekunder...</StyledDiv>; }; export standard ColorChangeDiv;

I det här exemplet använder viuseEffectkrok för att ställa in en timer som ändrar bakgrundsfärgen påStyledDivkomponent efter 3 sekunder. Vi städar även upp timern med hjälp av returfunktionen påuseEffectför att förhindra minnesläckor.

useContext with Emotion för globala stilar

DeanvändContextHook låter dig dela data mellan komponenter utan att behöva skicka rekvisita manuellt genom varje nivå i komponentträdet. Låt oss skapa ett exempel där vi använderanvändContextatt tillämpa globala stilar med hjälp av Emotion.

importera React, { createContext, useContext } från 'react'; importera stil från '@emotion/styled'; const ThemeContext = createContext(); const ThemeProvider = ({ barn }) => { const theme = { primärfärg: 'lila', sekundärfärg: 'rosa' }; return ( <ThemeContext.Provider value={theme}>{children}</ThemeContext.Provider> ); }; const StyledHeading = styled.h1` färg: ${props => props.theme.primaryColor}; `; const ThemeAwareComponent = () => { const theme = useContext(ThemeContext); return <StyledHeading theme={theme}>Detta är en teman rubrik</StyledHeading>; }; const App = () => { return ( <ThemeProvider> <ThemeAwareComponent /> </ThemeProvider> ); }; exportera standardapp;

I det här exemplet skapar vi enTemaKontextmed hjälp avskapaKontextfungera. Vi tillhandahåller ett temaobjekt till sammanhanget med hjälp avTemaleverantörkomponent. DeStyledHeadingkomponenten använder temaobjektet som skickas genom sammanhanget för att ställa in dess färg.

Avancerade användningsfall

Anpassade krokar med känslor

Du kan också skapa anpassade krokar som kombinerar React Hooks och Emotion-stilar. Låt oss skapa en anpassad krok som hanterar synligheten för en komponent och tillämpar Emotion-stilar därefter.

importera React, { useState } från 'react'; importera stil från '@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': 'ingen')}; bakgrundsfärg: ljusgrå; stoppning: 20px; `; const VisibleBox = () => { const { isVisible, toggleVisibility } = useVisibility(); return ( <> <button onClick={toggleVisibility}>Växla synlighet</button> <StyledBox isVisible={isVisible}>Denna ruta kan växlas</StyledBox> </> ); }; export standard VisibleBox;

I det här exemplet skapar vi en anpassad krokanvändSynlighetsom hanterar synlighetstillståndet för en komponent. DeStyledBoxkomponenten använderär Synligprop för att avgöra om den ska visas eller döljas.

Slutsats

Att kombinera React Hooks med Emotion erbjuder ett kraftfullt och flexibelt sätt att bygga användargränssnitt. React Hooks tillhandahåller tillståndshantering och sidoeffektfunktioner, medan Emotion låter dig skriva dynamiska och omfångade stilar direkt i din JavaScript-kod. Oavsett om du bygger en enkel knapp eller en komplex applikation, kan kombinationen av dessa två tekniker hjälpa dig att skapa mer underhållbar och effektiv kod.

Om du är intresserad av att utforska fler typer av krokar för dina projekt, erbjuder vi ett brett utbud av högkvalitativa krokar. Kolla in vårSlatwall krokarochPegboard krokarför olika applikationer.

Om du funderar på att köpa krokar till ditt företag eller projekt finns vi här för att hjälpa dig. Kontakta oss för att diskutera dina krav och få en skräddarsydd lösning.

Referenser

  • Reagera officiell dokumentation
  • Emotion officiell dokumentation