Bilamizki, useEffect
— bu React hook bo‘lib, u komponentda yon ta’sirlar (side effects)ni bajarish uchun ishlatiladi.
Diqqat qiling: useEffect
- bu side effect deyilmayapti, balki side effectlarni bajarish uchun vositadir. Man buni hozirgina maqola yozayotganimda payqab qoldim. Bungacha esa useEffect
ni o‘zi side effect deb noto‘g‘ri tushunib yurgan ekanman.
Hop, unda side effects - yon ta’sirlarni o’zi nima? Bu haqda ChatGPT’dan so’raganimda, quyidagicha javob oldim:
Javobni o‘qiyotib, meni bir narsa e’tiborimni tortdi.
Mening e’tiborimni tortgan narsa - console.log
Axir bu biz har doim xatoliklarni aniqlash (debug) qilishda foydalanadigan console.log
-ku, dedim. Demak, console.log
ham side effect — yon ta’sir hisoblanadi. Shunda tushundimki, side effectlar nafaqat React’da, balki JavaScript’ning o‘zida ham mavjud. Hatto bundan ham kengroq qarasak, side effectlar faqat React yoki JavaScript bilan cheklanmaydi — ular deyarli barcha dasturlash tillarida uchraydi.
Keling, avvalo 'side effect' tushunchasi JavaScript’da qanday bo‘lishini, keyin esa React’da qanday qo‘llanilishini o‘rganamiz.
Side Effect JavaScript tilida nima o‘zi? Oddiy qilib aytganda, side effect — bu funksiyaning asosiy vazifasidan tashqari yana biror narsa qilishi demakdir.
Misol:
function add(a, b) {
console.log(a + b); // bu side effect
return a + b;
}
Bu yerda add
funksiyasi ikkita sonni qo‘shib beradi — bu uning asosiy vazifasi. Ammo u yana console.log()
orqali qiymatni konsolga chiqarayapti. Bu esa uning “yon ish”i, ya’ni side effect.
Yana ba’zi oddiy misollar:
console.log()
— konsolga yozadi.alert()
— foydalanuvchiga bildirishnoma ko‘rsatadi.document.querySelector().innerHTML = ...
)fetch()
, axios.get()
)fs.writeFile()
kabi)Bu harakatlarning barchasi tashqi muhitga ta’sir ko‘rsatadi yoki tashqi muhitdan ta’sir oladi. Mana shuning uchun ular side effect hisoblanadi.
Yon ta’sirsiz (pure) funksiyalar haqida
Shu o‘rinda pure function
degan tushunchani ham eslatib o‘tish kerak. Yon ta’sirsiz (pure) funksiyalar — bu: