Middle
Kokios taisyklės galioja rašant hooks React?
sobes.tech AI
Atsakymas iš AI
- Kviečiami hook'ai tik aukščiausio lygio funkciniuose komponentuose arba kituose naudotojo hook'uose. Negalima kviečiant hook'ų cikluose, sąlygose ar vidinėse funkcijose:
- Kviečiami hook'ai tik React funkciniuose komponentuose. Negalima jų kviečiant į paprastus JavaScript funkcijas ar klasės komponentus:
useCallbacknaudojimas funkcijų memoizacijai iruseMemonaudojimas skaičiavimų memoizacijai padeda optimizuoti našumą:useEffectnaudojimas šalutiniams efektams (duomenų įkėlimui, prenumeratoms ir kt.), nurodant priklausomybių masyvą efektui valdyti:- Laikytis hook'ų kvietimo tvarkos kiekvieno komponento perrėmimo metu. React remiasi šia tvarka teisingam būsenos ir efektų susiejimui:
- Stabilios priklausomybės
useEffect,useCallback,useMemomasyvuose. Nereikia perduoti objektų ar funkcijų, kurios kuriamos kiekvieno perrėmimo metu be reikalo: - Kurti savo naudotojo hook'us, kad galėtumėte pakartotinai naudoti būsenos logiką tarp komponentų. Naudotojo hook'ų pavadinimai turi prasidėti
use:
// Teisingas pavyzdys: hook'ų kvietimas aukščiausio lygio
function MyComponent() {
const [count, setCount] = useState(0); // Kvietimas aukščiausio lygio
useEffect(() => { // Kvietimas aukščiausio lygio
document.title = `Jūs paspaudėte ${count} kartus`;
}, [count]); // priklausomybių masyvas
const handleClick = useCallback(() => { // Kvietimas aukščiausio lygio
setCount(c => c + 1);
}, []); // Memos funkcija
return (
<div>
<p>Jūs paspaudėte {count} kartus</p>
<button onClick={handleClick}>
Spustelėk mane
</button>
</div>
);
}
// Neteisingas pavyzdys: hook'ų kvietimas sąlygoje
// function MyComponentWithBadHook() {
// if (someCondition) {
// const [count, setCount] = useState(0); // Neteisinga: kvietimas sąlygoje
// }
// // ...
// }
// Neteisingas pavyzdys: hook'ų kvietimas cikle
// function MyComponentWithAnotherBadHook() {
// for (let i = 0; i < 5; i++) {
// const [value, setValue] = useState(i); // Neteisinga: kvietimas cikle
// }
// // ...
// }