⊗jsrtPmHkUMe 14 of 47 menu

Kifaa cha Uboreshaji wa Utendaji useMemo katika React

Kifaa cha kwanza cha uboreshaji wa utendaji tutakachochunguza ni useMemo.

Kifaa hiki kinasaidia kuhifadhi matokeo ya shughuli zenye kutumia rasilimali nyingi kati ya nyakati za kuonyesha upya skrini na ipasavyo inaweza kusaidia kuepuka mahesabu mazito ya ziada. Hifadhi hiyo huitwa pia ukumbusho.

Tutaona jinsi inavyofanya kazi. Wacha tuunde sehemu yenye kifuta na kichwa h3:

return ( <div> <h3>Maandishi</h3> <button>bofya</button> </div> );

Sasa tufanye ili kwa kubofya kichwa rangi yake ibadilike kutoka machungwa hadi kijani na kurudi nyuma. Kwanza tuweke hali isGreen:

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

Weka katika sifa style ya kichwa hali ya kubadilisha rangi kichwani na uweke kichakato cha kubofya:

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

Iwe pia tuna thamani fulani, ambayo itaongezeka kwa kubofya kifuta chetu kwa moja. Tuweke hali yake:

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

Weka uchakaji wa kubofya kifutani:

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

Iwe pia tuna kitendaji fulani square, ambacho kitarudisha mraba wa thamani num. Matokeo ya wito wa kitendaji tutayaandika kwenye kigeuzi result:

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

Tuonyeshe result kwenye maandishi ya kifuta:

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

Kwa matokeo tuliyopata ni yafuatayo: kwa kubofya kifuta thamani ya num inabadilika, kisha inainuliwa mraba, na kwa kubofya kichwani rangi ya kichwa inabadilika.

Tuna sehemu ndogo sana, kila kitu kinafanya kazi haraka, licha ya kwamba kwa kubofya kichwani ili kubadilisha rangi yake sehemu nzima inaonyeshwa upya, ipasavyo hutokea tena na mahesabu, yanayohusishwa na kifuta, hii hata kwa kuwa hatukugusa. Na sasa fikiria kama mahesabu yetu yangalikuwa mazito na yote yangehesabiwa upya kila wakati.

Wacha, tuzidishie kidumu kitendaji chetu, sasa kitawaza kidumu zaidi. Hivyo tutaiga mahesabu marefu:

function square(num) { let startTime = performance.now(); while (performance.now() - startTime < 500) { // Tu usifanye chochote ... } return num * num; }

Bonyeza tena kichwani. Inatokea, kwamba sasa kwa sababu ya kufanya kazi kwa muda mrefu kwa kitendaji square (na kifuta hatukikigusa) tunapaswa kusubiri milele, ili kichwa kibadilishe rangi yake!

Hapa ndio utasaidiwa na kifaa useMemo. Kwa hili, tunahitaji kwanza kupitisha kigeuzo cha kwanza kitendaji, kinachohesabu thamani, tunayotaka kuhifadhi, kitendaji hiki kinabidi kiwe safi na kisichukue vigeuzo vyovyote. Na kigeuzo cha pili - tegemezi kwenye mabano mraba kwa maneno mengine, maadili yote yanayobadilika yanayohusika katika msimbo wa kitendaji. Hivyo, kwenye result sasa tutaandika muundo kama huu:

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

Bonyeza tena kichwani. Sasa, kama hatutoi kifuta chenye mahesabu na hatubadilishi hivyo thamani ya hali num, basi hakuna kinachohesabiwa upya, na React inaonyesha thamani iliyohifadhiwa kwenye kifuta, kwa hivyo kichwa chetu kinabadilisha rangi yake haraka.

Unda sehemu App, weka ndani yake aya. Weka hali text na thamani ya mwanzo 'react', iwe thamani ya hali inaonyeshwa kama maandishi ya aya. Iwe kwa kubofya aya, mwisho wake wa maandishi huongezewa alama ya mshangao.

Weka hali nyingine num, na thamani ya mwanzo 0. Weka kwenye App aya nyingine. Fanya ili kwa kubofya kwake num iongezeke kwa 1.

Sasa ongeza kwenye App kitendaji triple, ambacho kama kigeuzo huchukua num na kinarudisha thamani yake iliyozidishwa mara tatu. Weka matokeo ya wito wa kitendaji kwenye kigeuzo result. Onyesha result kama maandishi ya aya ya pili. Bofya kwa mpangilio kwenye aya, weka alama, jinsi taratibu inavyoongezwa alama za mshangao.

Sahihisha hali hiyo, kwa kufunga kitendaji chenye kutardimia triple ndani ya useMemo.

Kiswahili
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Tunatumia kuki kwa ajili ya uendeshaji wa tovuti, uchambuzi na ubinafsishaji. Usindikaji wa data unafanyika kulingana na Sera ya Faragha.
kubali yote sanidi kataa