Cum se utilizează React Hooks with Emotion?

Nov 17, 2025Lăsaţi un mesaj

În calitate de furnizor experimentat de Hooks, am fost martor la puterea de transformare a React Hooks în peisajul dezvoltării web. Atunci când este combinat cu Emotion, o bibliotecă populară CSS-in-JS, rezultatul este o modalitate dinamică și eficientă de a construi interfețe cu utilizatorul. În această postare pe blog, vă voi împărtăși cum puteți utiliza React Hooks with Emotion pentru a crea aplicații uimitoare și ușor de întreținut.

Înțelegerea React Hooks și Emotion

Înainte de a explora combinația lor, să înțelegem pe scurt ce sunt React Hooks și Emotion.

React Hooks sunt o caracteristică introdusă în React 16.8 care vă permite să utilizați stare și alte caracteristici React fără a scrie o clasă. Cârlige causeState,useEffect, șifoloseșteContextau revoluționat modul în care dezvoltatorii scriu componente funcționale, făcându-le mai puternice și mai flexibile.

Emotion, pe de altă parte, este o bibliotecă CSS-in-JS care vă permite să scrieți stiluri CSS direct în codul JavaScript. Oferă o integrare perfectă cu React, permițându-vă să creați stiluri dinamice și definite pentru componentele dvs.

Configurarea Proiectului

Pentru a începe, va trebui să creați un nou proiect React. Puteți folosi aplicația Create React pentru a configura rapid o structură de bază a proiectului.

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

Apoi, instalați Emotion și legăturile sale React.

npm install @emotion/react @emotion/styled

Utilizarea useState cu Emotion

TheuseStatehook este unul dintre cele mai frecvent utilizate cârlige în React. Vă permite să adăugați stare unei componente funcționale. Să creăm un exemplu simplu în care folosimuseStatepentru a comuta culoarea unui buton folosind stilurile Emotion.

import React, { useState } din 'react'; import stilat din „@emotion/styled”; const StyledButton = styled.button` culoare de fundal: ${props => (props.isActive ? 'albastru': 'gri')}; culoare: alb; umplutură: 10px 20px; chenar: niciunul; cursor: pointer; `; const ColorToggleButton = () => { const [isActive, setIsActive] = useState(false); const handleClick = () => { setIsActive(!isActive); }; return ( <StyledButton isActive={isActive} onClick={handleClick}> {isActive ? 'Active': 'Inactive'} </StyledButton> ); }; export implicit ColorToggleButton;

În acest exemplu, definim aStyledButtoncomponentă folosind Emotion'sstilizatfuncţie. Culoarea de fundal a butonului este determinată deesteActivprop. FolosimuseStatecârlig pentru a gestionaesteActivstare și comutați-l când faceți clic pe butonul.

0154_20153_3

utilizați Efect cu emoție pentru efecte secundare

TheuseEffectcârligul este folosit pentru a efectua efecte secundare în componentele funcționale. Efectele secundare pot include preluarea datelor, abonamente sau manipulări DOM. Să creăm un exemplu în care folosimuseEffectpentru a schimba culoarea de fundal a unei componente după un anumit timp.

import React, { useState, useEffect } din 'react'; import stilat din „@emotion/styled”; const StyledDiv = styled.div` culoare de fundal: ${props => props.bgColor}; umplutură: 20px; culoare: alb; `; const ColorChangeDiv = () => { const [bgColor, setBgColor] = useState('red'); useEffect(() => { const timer = setTimeout(() => { setBgColor('verde'); }, 3000); return () => clearTimeout(timer); }, []); return <StyledDiv bgColor={bgColor}>Culoarea se va schimba în 3 secunde...</StyledDiv>; }; export implicit ColorChangeDiv;

În acest exemplu, folosimuseEffectcârlig pentru a seta un temporizator care schimbă culoarea de fundal aStyledDivcomponentă după 3 secunde. De asemenea, curățăm cronometrul folosind funcția de returnare auseEffectpentru a preveni scurgerile de memorie.

utilizați Context cu Emotion pentru stiluri globale

ThefoloseșteContextcârligul vă permite să partajați date între componente fără a fi nevoie să treceți manual recuzita prin fiecare nivel al arborelui componente. Să creăm un exemplu în care folosimfoloseșteContextpentru a aplica stiluri globale folosind Emotion.

import React, { createContext, useContext } din 'react'; import stilat din „@emotion/styled”; const ThemeContext = createContext(); const ThemeProvider = ({ copii }) => { const theme = { primaryColor: 'violet', secondaryColor: 'roz'}; return ( <ThemeContext.Provider value={theme}>{children}</ThemeContext.Provider> ); }; const StyledHeading = styled.h1` culoare: ${props => props.theme.primaryColor}; `; const ThemeAwareComponent = () => { const theme = useContext(ThemeContext); return <StyledHeading theme={theme}>Acesta este un titlu tematic</StyledHeading>; }; const App = () => { return ( <ThemeProvider> <ThemeAwareComponent /> </ThemeProvider> ); }; exportați aplicația implicită;

În acest exemplu, creăm unThemeContextfolosindcreateContextfuncţie. Oferim un obiect temă contextului folosindThemeProvidercomponentă. TheStyledHeadingcomponenta folosește obiectul temă trecut prin context pentru a-și seta culoarea.

Cazuri de utilizare avansate

Cârlige personalizate cu emoție

De asemenea, puteți crea cârlige personalizate care combină stilurile React Hooks și Emotion. Să creăm un cârlig personalizat care gestionează vizibilitatea unei componente și aplică stilurile Emotion în consecință.

import React, { useState } din 'react'; import stilat din „@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')}; culoare de fundal: gri deschis; umplutură: 20px; `; const VisibleBox = () => { const { isVisible, toggleVisibility } = useVisibility(); return ( <> <button onClick={toggleVisibility}>Toggle Visibility</button> <StyledBox isVisible={isVisible}>Această casetă poate fi comutată</StyledBox> </> ); }; export implicit VisibleBox;

În acest exemplu, creăm un cârlig personalizatutilizațiVizibilitateacare gestionează starea de vizibilitate a unei componente. TheStyledBoxcomponenta folosesteeste Vizibilprop pentru a determina dacă ar trebui să fie afișat sau ascuns.

Concluzie

Combinarea React Hooks cu Emotion oferă o modalitate puternică și flexibilă de a construi interfețe cu utilizatorul. React Hooks oferă capabilități de gestionare a stării și efecte secundare, în timp ce Emotion vă permite să scrieți stiluri dinamice și definite direct în codul JavaScript. Indiferent dacă construiți un buton simplu sau o aplicație complexă, combinația acestor două tehnologii vă poate ajuta să creați un cod mai ușor de întreținut și mai eficient.

Dacă sunteți interesat să explorați mai multe tipuri de cârlige pentru proiectele dvs., vă oferim o gamă largă de cârlige de înaltă calitate. Consultați-neCârlige SlatwallşiCârlige pegboardpentru diferite aplicații.

Dacă doriți să achiziționați cârlige pentru afacerea sau proiectul dvs., suntem aici pentru a vă ajuta. Contactați-ne pentru a discuta cerințele dvs. și pentru a obține o soluție personalizată.

Referințe

  • Reacționează documentația oficială
  • Emotion documentație oficială