Mga React hook na ginagamit araw-araw, pinangkat ayon sa gawain: paghawak ng state, pagpapatakbo ng mga effect, pag-memoize ng gawain, pagbabahagi ng context, at pag-abot sa labas ng render. Bawat hilera pinapares ang hook sa kung ano ito.
Ang hook ay isang function na nagpapahintulot sa isang function component na maka-access sa mga tampok ng React: state, lifecycle, context, at pag-ayos ng performance. Ang dalawang patakaran: tawagin ang mga hook sa pinakamataas na antas (hindi kailanman sa loob ng loop o kondisyon), at tawagin ang mga ito mula sa mga React function lamang. Ang natitira ay ang pagpili ng tamang hook para sa gawain.
Talaan ng sanggunian · 24 mga entry
Mga React HookExplained
24 of 24 rows
State
Hawak ang isang value na nagti-trigger ng re-render kapag nagbago ito.
Local na state ng component: mga form field, toggle, counter.
Hawak ang state na pinapatakbo ng isang action reducer, parang maliit na store.
State na may ilang magkakaugnay na field o kumplikadong transition.
Hawak ang mutable na value na HINDI nagti-trigger ng re-render.
Mga mutable na container, timer, at direktang DOM access sa pamamagitan ng .current.
Mga Effect
Nagpapatakbo ng side effect pagkatapos ng render, na may opsyonal na cleanup.
Paghahanap ng data, mga subscription, at pag-sync sa panlabas na sistema.
Ang function na ibinabalik ng effect ay tumatakbo bago ang susunod na effect at muli sa unmount.
Pagbibitaw sa mga subscription at timer, o pag-abort sa isang fetch na nasa gitna pa.
Tulad ng useEffect, ngunit tumatakbo nang sabay-sabay pagkatapos ng DOM mutation.
Pagbasa o pagsulat ng layout bago mag-paint ang browser (toast, tooltip).
Ang mga event handler ay tumatakbo bilang tugon sa gawain ng user; ang mga effect ay tumatakbo pagkatapos ng render para mag-sync.
Ang logic na galing sa user ay nararapat sa handler, ang logic na galing sa render ay sa effect.
Sa development, nagmo-mount ng component nang dalawang beses para tumakbo ang mga effect, maglinis, at tumakbo muli.
Paghuli ng dobleng subscription at kulang na cleanup bago ang production.
Performance
Nag-cache ng computed na value hanggang magbago ang mga dependency nito.
Pag-iwas sa mamahaling muling pagkalkula sa mga render; sadyang baguhin ang isang value sa deps para mabura ang cache.
Nag-cache ng function reference hanggang magbago ang mga dependency nito.
Mga stable na callback na ipinapasa sa mga memoized na anak o ginagamit bilang deps.
Nilalaktawan ang re-render ng component na hindi nagbago ang mga props.
Mabibigat na child component; magpasa ng comparison function bilang pangalawang argumento kapag hindi sapat ang shallow equality (HOC ito, hindi hook).
Context at panlabas na handle
Nagbabasa ng context value nang walang prop drilling.
Theme, locale, o auth user na ibinabahagi sa buong tree.
Nako-customize ang instance na nakikita ng parent sa pamamagitan ng ref.
Paglabas ng pinaikling API mula sa isang child sa pamamagitan ng forwardRef.
Concurrency at iba pa
Minamarka ang isang state update bilang hindi kailangang magmadali para manatiling tumutugon ang UI.
Pananatiling mabilis ng input habang nagre-render ulit ang isang mabigat na listahan.
Nagpapaliban ng value para maito ang mga update.
Debounce ng mamahaling render nang walang timer.
Gumagawa ng stable at unique na id para sa mga accessibility attribute.
Pagdugtong ng label at input sa pagitan ng server at client render.
Nagbabasa ng promise o context habang nagre-render; ang tanging hook na maaaring tawagin nang kondisyonal.
Pagbukas ng promise gamit ang Suspense, o pagbasa ng context sa loob ng maagang return.
Hawak ang state na pinapatakbo ng isang form action, kasama na ang pending flag.
Mga pag-submit ng form na nagbabalik ng error o updated na state na ipapakita nang inline.
Nagre-render agad ng optimistic na value, pagkatapos ay babalik sa tunay na state kapag natapos ang action.
Pagpapakita ng like o ipinadalang mensahe habang nasa biyahe pa ang server request nito.
Nagbabasa ng pending state ng nakapalibot na <form>, walang kailangang props.
Submit button na nagdi-disable sa sarili habang nagse-submit ang parent form nito.
Nag-subscribe sa store sa labas ng React at nagbabasa ng isang konsistent na snapshot.
Mga browser API tulad ng online status, o third-party na state store.
Tumatakbo bago ang mga layout effect, ginawa para sa pag-inject ng mga CSS-in-JS rule.
Mga style library na kailangang magpasok ng rule bago mabasa ang layout.
Nagpapakita ng custom na label para sa internal state ng isang hook sa React DevTools.
Pag-label sa hawak ng isang custom hook habang nagde-debug.
Sariling hook na bumubuo sa mga built-in para ibahagi ang logic.
Reusable na stateful na gawi tulad ng useFetch o useMediaQuery.