⊗jsrtPmHkUMe 14 of 47 menu

Huku i Optimizimit të Performancës useMemo në React

Huku i parë për optimizimin e performancës që do të shqyrtojmë është useMemo.

Ky huk ndihmon në kachedimin e rezultateve të operacioneve intensive në burime midis momenteve të rivizatimit të ekranit dhe në përputhje me rrethanat mund të ndihmojë në shmangien e llogaritjeve të panevojshme voluminoze. Ky lloj kachedimi quhet gjithashtu memorizim.

Le të shohim se si funksionon. Le të krijojmë një komponent me një buton dhe një titull h3:

return ( <div> <h3>Text</h3> <button>click</button> </div> );

Tani le ta bëjmë që me klikim në titull, ngjyra e tij të ndryshojë nga portokalli në të gjelbër dhe anasjelltas. Për fillim le të krijojmë një state isGreen:

const [isGreen, setIsGreen] = useState(false);

Le të shtojmë në atributin style të titullit kushtin e ndryshimit të ngjyrës dhe të lidhim trajtimin e klikimit:

<h3 onClick={() => setIsGreen(!isGreen)} style={{ color: isGreen ? 'green' : 'orangered' }} >Text</h3>

Le të kemi edhe një vlerë që do të rritet me një me çdo klik në butonin tonë. Le të krijojmë për të një state:

const [num, setNum] = useState(0);

Le të shtojmë trajtimin e klikimit në buton:

<button onClick={() => setNum(num + 1)}> klikime </button>

Le të kemi gjithashtu një funksion square, i cili do të kthejë katrorin e vlerës num. Rezultatin e thirrjes së funksionit do ta shkruajmë në ndryshoren result:

const result = square(num); function square(num) { return num * num; }

Le të shfaqim result në tekstin e butonit:

<button onClick={() => setNum(num + 1)}> klikime: {result} </button>

Si rezultat, kemi marrë sa vijon: me klikim në buton ndryshon vlera num, e cila më pas ngrihet në katror, dhe me klikim në titull ndryshon ngjyra e titullit.

Komponenti ynë është shumë i vogël, gjithçka funksionon shpejt, pavarësisht se me klikim në titull për të ndryshuar ngjyrën e tij, i gjithë komponenti rivizohet përsëri, prandaj ndodhin përsëri edhe llogaritjet, që lidhen me butonin, kjo edhe kur nuk e kemi prekur atë. Dhe tani imagjinoni nëse llogaritjet tona do të ishin voluminoze dhe gjithçka do të rillogaritej përsëri çdo herë.

Le ta rëndojmë pak funksionin tonë, tani do të "mendojë" pak më gjatë. Në këtë mënyrë do të imitojmë llogaritje të gjata:

function square(num) { let startTime = performance.now(); while (performance.now() - startTime < 500) { // Thjesht mos bëj asgjë ... } return num * num; }

Tani klikoni në titull. Rezulton se tani për shkak të punës së gjatë të funksionit square (dhe ne nuk e prekim butonin) ne duhet të presim një jetë të tërë që të ndryshojë ngjyra e titullit!

Këtu na vjen në ndihmë huku useMemo. Për këtë, ne duhet si parametër të parë të kalojmë një funksion, i cili llogarit vlerën që duam ta kachesojmë, ky funksion duhet të jetë i pastër dhe të mos pranojë parametra. Dhe si parametër të dytë - varësitë në kllapa katrore, me fjalë të tjera, të gjitha vlerat reaktive që marrin pjesë në kodin e funksionit. Kështu, në result ne tani do të shkruajmë një konstrukt të tillë:

const result = useMemo(() => square(num), [num]);

Le të klikojmë përsëri në titull. Tani, nëse nuk e prekim butonin me llogaritjet dhe nuk e ndryshojmë kështu vlerën e state num, atëherë asgjë nuk rillogaritet, dhe React shfaq vlerën e kachedizuar në buton, prandaj titulli ynë e ndryshon shpejt ngjyrën e tij.

Krijoni një komponent App, vendoseni në të një paragraf. Krijoni një state text me vlerë fillestare 'react', le të shfaqet vlera e state si tekst i paragrafit. Le të jetë që me klikim në paragraf, në fund të tekstit i shtohet një pikëçuditëse.

Krijoni një state tjetër num, me vlerë fillestare 0. Vendoseni në App një paragraf tjetër. Bëni që, me klikim në të num të rritet me 1.

Dhe tani shtoni në App funksionin triple, i cili si parametër pranon num dhe kthen vlerën e tij të trefishuar. Vendoseni rezultatin e thirrjes së funksionit në ndryshoren result. Shfaqni result si tekst të paragrafit të dytë. Klikoni me radhë në paragrafë, vëreni se sa ngadalë shtohen pikëçuditëset.

Rregulloni situatën, duke mbështjellë funksionin e ngadaltë tripleuseMemo.

Shqip
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ne përdorim cookie për funksionimin e sajtit, analizën dhe personalizimin. Përpunimi i të dhënave bëhet në përputhje me Politikën e Privatësisë.
prano të gjitha konfiguro refuzo