Sinf muammolari - Hooks paydo bo'lishining sababi
Keling, React nima uchun sinf komponentlaridan voz kechishga qaror qilganidan boshlaylik.
Birinchidan, sinflar o'qib bo'lmaydigan bo'lib qoladi: ular o'sadi va ko'pincha turli xil mantiqlarni bir joyda saqlaydi. Misol uchun, componentDidMount() da siz ba'zi element uchun uslubni o'rnatishingiz, rozetkaga ulanishingiz va sahifaning sarlavhasini o'zgartirishingiz mumkin. Va bularning barchasi bitta hayot aylanish usulida.
Ikkinchidan, siz darslarni optimallashtirish uchun qo'shimcha vaqt sarflashingiz kerak: refaktoring, parchalanish, nafaqat ma'lum bir komponentning tuzilishini, balki u bilan bog'liq bo'lgan barcha narsalarni o'zgartirish. Funktsional komponentga hayot aylanish usuli kerak bo'lganda, siz uni sinfga qayta yozishingiz kerak.
Uchinchidan, yuqori darajadagi komponentlardan foydalanish kod bazasini murakkablashtiradi, siz ularni loyihaga qurishingiz va funksionallikni qayta tiklashingiz kerak.
Aytgancha, Reactdagi sinflar aynan sinflar emas, balki funksiyalardir. Agar siz Java yoki C#-da sinflar bilan ishlagan bo'lsangiz, unda siz ushbu tillardagi sinflar React-dagi sinflardan qanday farq qilishini bilasiz: meros, inkapsulyatsiya va boshqalar. Reaktsiya sinflarida bularning barchasi mavjud emas, faqat this kalit so'zi va usullari mavjud.
Kancalar nima?
Nega bizga React-da darslar kerak? Odatda mahalliy shtatlar va hayot aylanish usullari bilan ishlash uchun. Ilgaklar ular bilan darhol ishlashga imkon beradi - darslarni yozmasdan.
Masalan, useState kancasi davlat uchun javobgardir. Keling, undan foydalanish misolini ko'rib chiqaylik.
const [ism, setName] = useState('')
Komponent o'rnatilganda, nom o'zgaruvchisi bo'sh qatorni saqlaydi va siz bu qiymatni setName funksiyasidan foydalanib o'zgartirishingiz mumkin. Biz setName('Andrey') ni chaqiramiz va nom o'zgaruvchisi "Andrey" ga teng bo'ladi.
UseEffect effekti kancasi hayot aylanish usullari uchun javobgardir. Komponentda ularning bir nechtasi bo'lishi mumkin, shuning uchun siz mantiqni uning turli qismlarida tarqatishingiz mumkin. Masalan, siz 3 ta kancaga qo'ng'iroq qilishingiz mumkin,
Do'stlaringiz bilan baham: |