Այժմ, երբ ես գրավեցի ձեր ուշադրությունը 😵‍💫, եկեք խոսենք այն մասին, թե ինչպես են ազդեցությունները տարբերվում բաղադրիչներից: Մենք բոլորս գիտենք, որ բաղադրիչները կարող են տեղադրվել, թարմացվել և ապամոնտաժվել DOM-ից: A useEffect -ը մի փոքր այլ է, քանի որ այն կարող է աշխատել և կարող է դադարեցնել աշխատանքը:

Շատ ավելի պարզ, քան դասի բաղադրիչները 🥲:

Ամենաշփոթեցնող բաներից մեկը useEffect-ի կախվածության ցուցակն է: Սովորաբար, ավելի լավ է, որ այն հնարավորինս կարճ լինի, քանի որ ցուցակի չափից շատ փոփոխականները կհանգեցնեն նրան, որ այն չափազանց շատ է ցուցադրվում, և եթե դուք գալիս եք կախվածության ցուցակի, որը չափազանց երկար է, ապա փորձեք բաժանել այն ավելի փոքր էֆեկտների:

Բացի այդ, երբ մենք ստեղծում ենք փոփոխական, որը չի փոխվում, ապա մենք կարիք չունենք այն ավելացնել կախվածության ցանկում: Ահա թե ինչու դուք պետք է փորձեք օգտագործել հաստատուններ՝ ծրագրավորման իմաստով:

Երբ մենք գրում ենք կոդը, առաջինն այն է, որ մենք փորձում ենք և մտածում բաղադրիչների մասին այնպես, որ կարծում ենք, որ useEffect -ը պետք է աշխատի, երբ բաղադրիչը տեղադրվի, և դադարեցվի, երբ բաղադրիչն անջատվի:

Դե, երբեմն դա կստացվի, և բոլորը և ձեր ղեկավարը ուրախ կլինեն 🎉🥳, բայց երբեմն դա չի կտրի: Եթե ​​Ձեզ անհրաժեշտ է useEffect -ը մի քանի անգամ գործարկելու համար, երբ բաղադրիչը միացված է, ապա այն կցելը իր կյանքի ցիկլի հետ բավականին վատ պրակտիկա է, այն կաշխատի այնքան անգամ, երբ դրա կարիքը ունեք, և երբ դուք դա չեք անում, դա, իհարկե, մղձավանջ կլինի 👿 , եթե այն կարելի է հեռացնել, ապա ավելի լավ է, քան ունենալը, ավելի քիչ մատուցման ցիկլեր…. Եթե ​​դա անհնար է 🙈. Հատկապես, երբ այն ընդհանրապես տեղ չունի այդ բաղադրիչի ներսում, միայն այն պատճառով, որ հեշտ է այն տեղադրել այնտեղ…

Լավ լուծում է այն բաղադրիչից հանել որպես հատուկ կեռիկ և ավելացնել դրա համապատասխան կախվածությունը, որպեսզի այն ապրի այդ բաղադրիչի կյանքի ցիկլից դուրս, որը տեղադրվելու է և երբեք չի կարող ապամոնտաժվել կամ չնախատեսված վերարտադրում առաջացնել ♻️:

Լավ ընդհանուր կանոնն այն է, որ յուրաքանչյուր useEffect անկախ է և ունի կախվածության փոքր ցուցակ և չի առաջացնի «ընդմիջում» այլ էֆեկտներում, որոնք դուք ունեք, որոնք գտնվում են նույն «մոտակայքում» և չի առաջացնում շղթայական ռեակցիա. շղթան պարտադիր է և չի կարող այլ կերպ կառավարվել:

Հիշեք, որ երբ useEffect-ն ավելի քիչ սերտորեն զուգակցված է, ապա ապագայում ավելի հեշտ է պահպանել կոդը, այն, ինչ մենք այսօր ծույլ ենք իրականացնել, վաղը լրացուցիչ կաշխատենք վրիպազերծելու և ռեֆրակտորելու համար 🤔: