⊗jsrtPmHkAMe 15 of 47 menu

API memo React

Pirms mēs apskatām nākamo āķi, ir jāpiemin arī noderīgais API memo, kas mums palīdz izvairīties no komponenta atkārtotas renderēšanas, ja tā props paliek nemainīgi.

Izskatīsim to ar piemēru. Izveidosim komponentu App, kurā būs divi ievades lauki, kuros, pieņemsim, tiek ievadīts vārds un uzvārds:

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

Sākumā komponentam pievienosim stāvokļus (state) tiem:

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

Izveidosim arī apakšējo komponentu Child.js, lai tas izvada sveicienu, kurā tiks rādīts ievadītais vārds. Arī konsolē tiks izvadīta virkne 'child render' pie katras šī komponenta renderēšanas:

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

Pievienosim Child galvenā komponenta veidolā pēc pēdējā ievades lauka un kā propu (props) nodosim tam vārdu:

<Child name={name} />

Importēsim to galvenajā komponentā:

import Child from './Child';

Tagad atvērsim konsoli un ievades laukos ierakstīsim vārdu un uzvārdu. Šeit mēs redzēsim, ka pat ievadot simbolus uzvārda laukā, mūsu apakšējais komponents tiks pārzīmēts katru reizi. Nav nekādu problēmu, jo mums ir mazs komponents. Bet iedomājieties, ja šis komponents attēlotu lielu datu daudzumu un tajā pašā laikā, katru reizi tiktu pārzīmēts.

Tagad ietīsim apakšējo komponentu memo iekšā un paskatīsimies, kā mainīsies renderēšana. Sākumā importēsim tajā memo:

import { memo } from 'react';

Pēc tam izveidosim jaunu mainīgo un piešķirsim tam mūsu Child, ietītu memo iekšā. Mēs iegūsim sekojošu funkcionālo izteiksmi:

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

Atvērsim konsoli un atkal ievadīsim vārdu un uzvārdu laukos. Tagad mēs redzam, ka, ievadot uzvārdu, mūsu apakšējais komponents netiek pārzīmēts.

Jāatceras, ka tas nedarbosies, ja pie nemainīgiem propiem mainīsies komponentā izmantotie stāvokļi (state) vai konteksts, kas izmanto izmaiņas.

Paņemiet komponenta App kodu, ko mēs izveidojām šajā nodarbībā, atstājiet tajā tikai pirmo ievades lauku. Izveidojiet React komponentu Text, kas satur rindkopu ar tekstu 'long text', un ievietojiet to App pēc ievades lauka.

Komponentā Text pievienojiet rindiņu console.log('text render');. Pārliecinieties, ka ievadot simbolus ievades laukā, komponents Text tiek pārzīmēts katru reizi.

Tagad ietīet komponentu Text memo iekšā. Pārliecinieties, ka, ievadot simbolus ievades laukā, komponents Text netiek pārzīmēts atkārtoti.

Latviešu
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Mēs izmantojam sīkdatnes, lai nodrošinātu vietnes darbību, analīti un personalizāciju. Datu apstrāde notiek saskaņā ar Konfidencialitātes politiku.
pieņemt visus iestatīt noraidīt