⊗jsrtPmHkAMe 15 of 47 menu

API memo i React

Innan vi tittar på nästa hook, är det nödvändigt att nämna det användbara API:et memo, som hjälper oss att undvika omrendering av en komponent, om dess props förblir oförändrade.

Låt oss ta ett exempel. Vi skapar komponenten App, som kommer att ha två inmatningsfält där, låt oss anta, förnamn och efternamn matas in:

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

Låt oss lägga till tillstånd för dem i början av komponenten:

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

Låt oss också skapa en underordnad komponent Child.js, låt den skriva ut en hälsning som kommer att visa det inmatade förnamnet. En sträng 'child render' kommer också att skrivas ut i konsolen vid varje rendering av denna komponent:

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

Låt oss lägga till Child i markupen för huvudkomponenten efter den sista inmatningen och skicka förnamnet som en prop till den:

<Child name={name} />

Importera den till huvudkomponenten:

import Child from './Child';

Och nu öppnar vi konsolen och börjar mata in förnamn och efternamn i fälten. Här ser vi att även när tecken matas in i efternamnsfältet kommer vår underordnade komponent att ritas om varje gång. Inga problem, eftersom vi har en liten komponent. Men tänk dig om den här komponenten visade en stor mängd data och samtidigt ritas om varje gång.

Och låt oss nu svepa in den underordnade komponenten i memo och se hur renderingen förändras. Först importerar vi memo till den:

import { memo } from 'react';

Skapa sedan en ny variabel och tilldela den vår Child, insvept i memo. Vi får följande funktionellt uttryck:

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

Vi öppnar konsolen och börjar igen mata in förnamn och efternamn i fälten. Nu ser vi att när efternamn matas in, återrenderas inte vår underordnade komponent.

Det är viktigt att komma ihåg att detta inte kommer att fungera om tillstånd som används av komponenten ändras trots oförändrade props, eller om en kontext som använder förändringar ändras.

Ta koden för komponenten App, som vi gjorde i den här lektionen, lämna bara det första inmatningsfältet i den. Skapa en React komponent Text som innehåller ett stycke med texten 'long text', och placera den i App efter inmatningsfältet.

I komponenten Text, lägg till raden console.log('text render');. Se till att när tecken matas in i inmatningsfältet så återrenderas komponenten Text varje gång.

Och svep nu in komponenten Text i memo. Se till att när tecken matas in i inmatningsfältet så återrenderas inte komponenten Text på nytt.

Svenska
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Vi använder kakor för webbplatsens funktion, analys och personalisering. Behandling av data sker i enlighet med Integritetspolicyn.
acceptera alla anpassa avvisa