Middle
React'da hook yozishda qanday qoidalar mavjud?
sobes.tech AI
AIdan javob
- Foydalanadigan hooklarni faqat funksional komponentlarning yuqori darajasida yoki boshqa maxsus hooklar ichida chaqiring. Hooklarni tsikllarda, shartlarda yoki ichki funksiyalarda chaqirmang.
- React funksional komponentlar ichida faqat hooklarni chaqiring. Oddiy JavaScript funksiyalari yoki sinf komponentlarida chaqirmang.
useCallbackyordamida funksiyalarni memoizatsiya qilish vauseMemoyordamida hisoblashlarni memoizatsiya qilish ishlashni optimallashtirishga yordam beradi.useEffectyordamida yon ta'sirlarni (ma'lumotlarni yuklash, obuna bo'lish va boshqalar) boshqaring va effektni bajarishni nazorat qilish uchun bog'liqlik massivini belgilang.- Har bir komponentni qayta render qilishda hooklarni chaqirish tartibiga rioya qiling. React bu tartibga asoslanadi, shuning uchun holat va effektlar to'g'ri bog'lanadi.
useEffect,useCallback,useMemouchun barqaror bog'liqliklarni bog'liqlik massivlarida foydalaning. Har bir renderda yaratilgan obyektlar yoki funksiyalarni keraksiz joyda o'tkazmang.- Holatni qayta ishlash uchun maxsus hooklar yarating. Maxsus hooklarning nomlari
usebilan boshlanishi kerak.
// To'g'ri misol: hooklarni yuqori darajada chaqirish
function MyComponent() {
const [count, setCount] = useState(0); // Yuqori darajada
useEffect(() => { // Yuqori darajada
document.title = `Siz ${count} marta bosdingiz`;
}, [count]); // Bog'liqlik massiv
const handleClick = useCallback(() => { // Yuqori darajada
setCount(c => c + 1);
}, []); // Memoizlangan funksiya
return (
<div>
<p>Siz {count} marta bosdingiz</p>
<button onClick={handleClick}>
Menga bosing
</button>
</div>
);
}
// Noto'g'ri misol: hookni shartda chaqirish
// function MyComponentWithBadHook() {
// if (someCondition) {
// const [count, setCount] = useState(0); // Noto'g'ri: shartda chaqirish
// }
// // ...
// }
// Noto'g'ri misol: hookni siklda chaqirish
// function MyComponentWithAnotherBadHook() {
// for (let i = 0; i < 5; i++) {
// const [value, setValue] = useState(i); // Noto'g'ri: siklda chaqirish
// }
// // ...
// }