React zajišťuje konzistenci stavu při podmíněném použití háčků podle následujících pravidel:
1. Pouze hovory na nejvyšší úrovni:
- Háky by měly být volány na nejvyšší úrovni funkce React před jakýmkoliv předčasným návratem. To zajišťuje, že háky jsou volány ve stejném pořadí pokaždé, když se komponenta vykresluje, což umožňuje Reactu správně zachovat stav háčků mezi více voláními `useState` a `useEffect`[4].
2. Pouze hovory z funkcí React:
- Háčky by měly být volány z komponent funkce React nebo vlastních háčků. To zajišťuje, že veškerá stavová logika komponenty je jasně viditelná z jejího zdrojového kódu[4].
3. Používejte Hooks moudře:
- Používejte Hooks moudře tím, že se vyhnete zbytečným aktualizacím stavu a vedlejším efektům. Toho lze dosáhnout použitím `useMemo` a `useCallback` k zapamatování funkcí a vyhnout se zbytečným výpočtům[1].
4. Použijte kontextové rozhraní API:
- Použijte kontextové rozhraní API ke sdílení stavu mezi komponentami. To vám umožňuje spravovat stav v centralizovaném umístění a přistupovat k němu z jakékoli komponenty, která to potřebuje[1].
5. Použijte reference:
- Použijte refs pro přístup k uzlům DOM nebo jiným hodnotám, které je třeba získat přímo. To vám umožňuje řídit stav a vedlejší účinky více kontrolovaným způsobem[1].
6. Použijte výkonnostní háky:
- Použijte výkonnostní háčky jako `useMemo` a `useCallback` k optimalizaci výkonu vykreslování. To vám umožní přeskočit zbytečnou práci a optimalizovat vykreslování[1].
7. Použijte zdrojové háčky:
- Použijte háky zdrojů jako `useResource` pro přístup ke zdrojům, aniž byste byli součástí jejich stavu. To vám umožňuje řídit stav a vedlejší účinky více kontrolovaným způsobem[1].
8. Používejte vlastní háčky:
- Použijte vlastní háčky k zapouzdření složité logiky a udělejte svůj kód čitelnějším. To vám umožní znovu použít stavovou logiku mezi různými komponentami[1].
Dodržováním těchto pravidel a osvědčených postupů můžete zajistit, že si vaše aplikace React zachová konzistenci stavu, i když se háky používají podmíněně.
Citace:[1] https://www.geeksforgeeks.org/reactjs-hooks/
[2] https://legacy.reactjs.org/docs/hooks-intro.html
[3] https://www.smashingmagazine.com/2020/04/react-hooks-best-practices/
[4] https://legacy.reactjs.org/docs/hooks-rules.html
[5] https://react.dev/reference/react/hooks