⊗jsrtPmHkAMe 15 of 47 menu

API memo v Reactu

Preden preučimo naslednji kavelj, je potrebno omeniti tudi uporaben API memo, ki nam pomaga izogibati se ponovnemu upodabljanju komponente, če njeni props ostanejo nespremenjeni.

Razložimo to s primerom. Ustvarimo komponento App, v kateri bosta dva vnosna polja, v katera, predpostavimo, vnašamo ime in priimek:

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

Dodajmo na začetek komponente stanja zanje:

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

Naredimo še podrejeno komponento Child.js, naj izpiše pozdrav, v katerem bo prikazano vnašano ime. Tudi v konzolo se bo izpisal niz 'child render' ob vsakem upodabljanju te komponente:

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

Dodajmo Child v razporeditev glavne komponente za zadnjim vnosnim poljem in mu bomo kot prop posredovali ime:

<Child name={name} />

Uvozimo ga v glavno komponento:

import Child from './Child';

In sedaj odprimo konzolo in v polja za vnos vnašajmo ime in priimek. Tukaj bomo videli, da tudi ob vnašanju znakov v polje za priimek, se bo naša podrejena komponenta vsakič ponovno upodobila. Ni težav, saj je naša komponenta majhna. Toda predstavljajte si, če bi ta komponenta prikazovala veliko količino podatkov in se ob tem vsakič ponovno upodabljala.

In sedaj pa ovijmo podrejeno komponento v memo, in poglejmo, kako se bo upodabljanje spremenilo. Za začetek uvozimo vanjo memo:

import { memo } from 'react';

Nato ustvarimo novo spremenljivko in ji dodelimo naš Child, ovitega v memo. Dobili bomo naslednje funkcijsko izraz:

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

Odprimo konzolo in ponovno vnašajmo ime in priimek v polja. Zdaj vidimo, da ob vnašanju priimka, se naša podrejena komponenta ne ponovno upodablja.

Zapomniti si je treba, da to ne bo delovalo, če se ob nespremenjenih props spremenijo stanja, ki jih komponenta uporablja, ali kontekst, ki uporablja spremembe.

Vzemite kodo komponente App, ki smo jo naredili v tej lekciji, pustite v njej le prvo vnosno polje. Ustvarite React komponento Text, ki vsebuje odstavek z besedilom 'long text', in jo postavite v App za vnosnim poljem.

V komponenti Text dodajte vrstico console.log('text render');. Prepričajte se, da se ob vnašanju znakov v vnosno polje komponenta Text vsakič ponovno upodobi.

In sedaj ovijte komponento Text v memo. Prepričajte se, da se ob vnašanju znakov v vnosno polje komponenta Text ne upodablja ponovno.

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
Za delovanje spletnega mesta, analitiko in personalizacijo uporabljamo piškotke. Obdelava podatkov poteka v skladu s Politiko zasebnosti.
sprejmi vse nastavi zavrni