⊗jsrtPmHkAMe 15 of 47 menu

API memo v Reacte

Skôr ako sa pozrieme na ďalší hook, je potrebné spomenúť aj užitočné API memo, ktoré nám pomáha vyhnúť sa opakovanému renderovaniu komponentu, ak jeho props ostanú nezmenené.

Poďme si to rozobrať na príklade. Vytvorme komponent App, v ktorom budú dva vstupy, do ktorých, predpokladajme, sa zadávajú meno a priezvisko:

return ( <div> <label> meno: <input value={name} onChange={(e) => setName(e.target.value)} /> </label> <br /> <label> priezvisko: <input value={surn} onChange={(e) => setSurn(e.target.value)} /> </label> </div> );

Pridajme na začiatok komponentu stavy pre ne:

const [name, setName] = useState(''); const [surn, setSurn] = useState('');

Urobme ešte aj podriadený komponent Child.js, nech zobrazuje pozdrav, v ktorom sa bude zobrazovať zadané meno. Tiež v konzole sa bude vypisovať reťazec 'child render' pri každom renderovaní tohto komponentu:

function Child({ name }) { console.log('child render'); return <h3>Ahoj {name}!</h3>; }

Pridajme Child do rozloženia hlavného komponentu za posledný vstup a budeme mu ako prop posielať meno:

<Child name={name} />

Importujme ho do hlavného komponentu:

import Child from './Child';

A teraz otvorme konzolu a budeme do polí na vkladanie zadávať meno a priezvisko. Tu uvidíme, že aj pri zadávaní znakov do poľa pre priezvisko, sa náš podriadený komponent bude zakaždým prekresľovať. Žiadne problémy, veď máme malý komponent. Ale predstavte si, keby tento komponent zobrazoval veľké množstvo dát a pritom sa zakaždým prekresľoval.

A teraz zabalme podriadený komponent do memo a pozrime sa, ako sa zmení renderovanie. Na začiatok importujme do neho memo:

import { memo } from 'react';

Potom vytvorme novú premennú a priraďme jej náš Child, zabalený do memo. Dostaneme nasledujúce funkčné vyhlásenie:

const Child = memo( function Child({ name }) { console.log('child render'); return <h3>Ahoj {name}!</h3>; });

Otvorme konzolu a budeme znova zadávať meno a priezvisko do polí. Teraz vidíme, že pri zadávaní priezviska, sa náš podriadený komponent neprekresľuje.

Treba pamätať, že to nebude fungovať, ak sa pri nezmenených props zmenia stavy, ktoré komponent využíva, alebo kontext, ktorý využíva zmeny.

Vezmite kód komponentu App, ktorý sme robili v tejto lekcii, nechajte v ňom iba prvý vstup. Vytvorte React komponent Text, obsahujúci odsek s textom 'long text', a umiestnite ho v App za vstup.

V komponente Text pridajte riadok console.log('text render');. Uistite sa, že pri zadávaní znakov do vstupu sa komponent Text prekresľuje zakaždým.

A teraz zabalte komponent Text do memo. Uistite sa, že pri zadávaní znakov do vstupu sa komponent Text neprekresľuje opakovane.

Slovenčina
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Používame cookies na fungovanie stránky, analýzu a personalizáciu. Spracúvanie údajov prebieha v súlade s Politikou ochrany osobných údajov.
prijať všetky nastaviť odmietnuť