Skip to content

React Hooks elmagyarázva

A hétköznapokban használt React hookok, feladatonként csoportosítva: state tárolása, effektek futtatása, munka memoizálása, context megosztása és a renderen kívüli világ elérése. Minden sor a hookot párosítja azzal, hogy mire való.

A hook egy függvény, amellyel egy függvénykomponens hozzáfér a React funkcióihoz: state, életciklus, context és teljesítményhangolás. A két szabály: a hookokat a legfelső szinten hívd meg (soha nem loopokban vagy feltételekben), és csak React-függvényekből hívd őket. A többi csak annyi, hogy a megfelelő hookot választod a feladathoz.

Referenciatáblázat · 24 bejegyzés
24 of 24 rows
Állapot
Egyetlen értéket tárol, amely megváltozásakor újrarenderelés következik.Helyi komponens-state: űrlapmezők, kapcsolók, számlálók.
Action-reducer vezérelte state-et tárol, mint egy kis store.Több összefüggő mezőből álló vagy összetett átmenetű state.
Módosítható értéket tárol, amely NEM vált ki újrarenderelést.Módosítható tárolók, timerek és közvetlen DOM-elérés a .current-on keresztül.
Effektek
Mellékhatást futtat a render után, opcionális cleanupmal.Adatok lekérése, feliratkozások és szinkronizálás külső rendszerrel.
Az a függvény, amelyet az effekt visszaad, a következő effekt előtt és unmountkor fut le.Feliratkozások és timerek lebontása, vagy futó lekérés megszakítása.
Mint a useEffect, de szinkronban fut a DOM-módosítás után.Layout olvasása vagy írása, mielőtt a böngésző fest (toastok, tooltipok).
Az eseménykezelők felhasználói műveletre futnak; az effektek a render után futnak, szinkronizálás céljából.A felhasználó által okozott logika a kezelőbe való, a render által okozott logika az effektbe.
Fejlesztésben kétszer mountolja a komponenseket, így az effektek lefutnak, kitakarítanak, majd újra lefutnak.Dupla feliratkozások és hiányzó cleanup észrevétele még production előtt.
Teljesítmény
Kiszámolt értéket gyorsítótáraz, amíg a függőségei nem változnak.Drága újraszámolások elkerülése renderek között; szándékosan változtass meg egy értéket a függőségekben a gyorsítótár törléséhez.
Függvényhivatkozást gyorsítótáraz, amíg a függőségei nem változnak.Stabil callbackek memoizált gyerekeknek, vagy függőségként való használathoz.
Kihagyja egy komponens újrarenderelését, ha a propjai nem változnak.Nehéz gyerekkomponensek; adj meg összehasonlító függvényt második argumentumként, ha a felületes egyenlőség nem elég (HOC, nem hook).
Context és külső handle-ök
Beolvassa a context értékét prop-drilling nélkül.Téma, locale vagy hitelesített felhasználó megosztása a fában.
Testreszabja azt a példányt, amelyet a szülő a refen keresztül lát.Szűk API kiadása egy gyerekből forwardRef segítségével.
Konkurencia és egyéb
Nem sürgősként jelöli meg a state-frissítést, hogy a UI reszponzív maradjon.A bevitel fürgén tartása, miközben egy nehéz lista újrarenderel.
Elhalaszt egy értéket, hogy a frissítések megszakíthatók legyenek.Drága renderek debounce-olása timerek nélkül.
Stabil, egyedi azonosítót generál az akadálymentesítési attribútumokhoz.Címke és beviteli mező összekapcsolása szerver- és kliensoldali renderben.
Promise-t vagy contextet olvas render közben; az egyetlen hook, amely feltételesen hívható.Promise kicsomagolása Suspense-szel, vagy context olvasása egy korai returnban.
Form action vezérelte state-et tárol, beépített pending jelzővel.Beküldések, amelyek hibákat vagy frissített state-et adnak vissza inline megjelenítéshez.
Azonnal optimista értéket renderel, majd visszaesik a valódi state-re, amikor az action befejeződik.Like vagy elküldött üzenet megjelenítése, miközben a szerverkérés folyamatban van.
Kiolvassa a körbezáró <form> pending állapotát, propok nélkül.Beküldő gomb, amely saját magát tiltja le, miközben a szülő formja beküld.
Feliratkozik a Reacten kívüli store-ra, és egy konzisztens pillanatképet olvas.Böngésző-API-k, mint az online állapot, vagy külső state-store-ok.
A layout-effektek előtt fut, CSS-in-JS szabályok beszúrásához készült.Stíluskönyvtárak, amelyeknek a szabályokat a layout olvasása előtt be kell szúrniuk.
Egyéni címkét mutat egy hook belső state-jére a React DevToolsban.Annak címkézése, hogy egy custom hook mit tárol, hibakeresés közben.
Saját hook, amely a beépítetteket komponálja össze a logika megosztásához.Újrafelhasználható, state-t kezelő viselkedés, mint a useFetch vagy useMediaQuery.