⊗jsrtPmHkAMe 15 of 47 menu

API memo i React

Før vi ser på den næste hook, er det nødvendigt at nævne det nyttige API memo, som hjælper os med at undgå unødvendig gen-gengivelse af en komponent, hvis dens props forbliver uændrede.

Lad os se på et eksempel. Vi opretter komponenten App, som vil have to inputfelter, hvor man for eksempel indtaster fornavn og efternavn:

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

Vi tilføjer til toppen af komponenten state for dem:

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

Lad os også lave en underordnet komponent Child.js, lad den vise en hilsen, hvor det indtastede fornavn vil blive vist. Derudover vil en streng 'child render' blive vist i konsollen ved hver gengivelse af denne komponent:

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

Vi tilføjer Child til layoutet af hoved- komponenten efter det sidste inputfelt og vil sende fornavnet til den som en prop:

<Child name={name} />

Vi importerer den til hovedkomponenten:

import Child from './Child';

Og nu åbner vi konsollen og begynder at indtaste fornavn og efternavn i inputfelterne. Her vil vi se, at selv når der indtastes tegn i feltet for efternavn, vil vores underordnede komponent blive gengivet hver gang. Det er ikke noget problem, da vores komponent er lille. Men forestil dig, hvis denne komponent viste en stor mængde data og samtidig blev gengivet hver gang.

Lad os nu pakke den underordnede komponent ind i memo og se, hvordan gengivelsen ændrer sig. Til at starte med importerer vi memo til den:

import { memo } from 'react';

Derefter opretter vi en ny variabel og tildeler den vores Child, pakket ind i memo. Vi får følgende funktionsudtryk:

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

Vi åbner konsollen og begynder igen at indtaste fornavn og efternavn i felterne. Nu ser vi, at når vi indtaster efternavn, bliver vores underordnede komponent ikke gengivet på ny.

Det er vigtigt at huske, at dette ikke vil virke, hvis der ændres state, som komponenten bruger, eller kontekst, der involverer ændringer, selvom props forbliver uændrede.

Tag koden for komponenten App, som vi lavede i denne lektion, og behold kun det første inputfelt. Opret en React komponent Text, der indeholder et afsnit med teksten 'long text', og placer den i App efter inputfeltet.

Tilføj linjen console.log('text render'); i komponenten Text. Sikr dig, at komponenten Text bliver gengivet på ny hver gang, når der indtastes tegn i inputfeltet.

Pak nu komponenten Text ind i memo. Sikr dig, at komponenten Text ikke gengives på ny, når der indtastes tegn i inputfeltet.

Dansk
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Vi bruger cookies til webstedets funktion, analyse og personalisering. Behandling af data foregår i henhold til Fortrolighedspolitikken.
accepter alle tilpas afvis