⊗jsrtPmHkAMe 15 of 47 menu

React-daky memo API-si

Indiki gogy gözden geçirmezden ozal, komponentiň proplary üýtgemeýän bolsa, onuň gaýtadan renderlenmeginden gaça durmaga kömek edýän peýdaly memo API-syny ýatlap geçmek gerek.

Mysal bilen düşünip göreli. App komponentini döretäýin, onda iki input bolsun, diýeliň, olara ad we familiýa girizilýär:

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

Komponentiň başyna olar üçin ýagdaýlar (state) goşalyň:

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

Ýene bir çagalaryň (child) komponentini döretäýin Child.js, onuň girişilýän ady görkezýän salamlaşyk ýazsyn. Şeýle hem her gezek bu komponent renderlenende konsolda 'child render' setiri görkezilsin:

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

Child-ni esasy komponentiň wersiýasyna iň soňky input-dan soň goşalyň we prop hökmünde ona ady ýollalyň:

<Child name={name} />

Ony esasy komponente import edeliň:

import Child from './Child';

Indi konsoly açalyň we input meýdanlaryna ady we familiýany girizeliň. Bu ýerde biz familiýa üçin meýdana nyşanlar girizenimizde-de, biziň çagalaryň komponentimiziň her gezek gaýtadan çekilýändigini göreris. Problem ýok, sebäbi biziň kiçijik komponent. Emma bu komponent köp sanly maglumat görkezýän bolsa we şol bir wagtyň özünde, her gezek gaýtadan çekilse nähili bolardy?

Indi bolsa çagalaryň komponentini memo-a geçiräýin we renderleşmegiň nädip üýtşändigine göz aýlapaýyň. Başlangyç hökmünde ona memo-y import edeliň:

import { memo } from 'react';

Soňra täze üýtgeýjini (variable) döret we ona memo-a geçirilen biziň Child-y bellä. Bizde aşakdaky funksional ifade ýüze çykar:

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

Konsoly açalyň we ýenede meýdanlara ady we familiýany girizeliň. Indi biz familiýa girizenimizde, biziň çagalaryň komponentimiziň gaýtadan çekilmeýändigini görýäris.

Proplary üýtgemeýän bolsa-da, komponent tarapyndan ulanylýan ýagdaýlaryň (state) ýa-da üýtgemeleri ulanýan kontekstiň üýtgeýän bolsa, bu işlemez.

Bu sapakda etdik biziň App komponent kodyny alyň, onda diňe birinji inputy goýuň. React komponenti Text dörediň, onuň içinde 'uzyn tekst' tekstli abzas bolsun we ony App-da input-dan soň ýerleşdiriň.

Text komponentine console.log('text render'); setirini goşuň. Input-a nyşan girizenimizde Text komponentiniň her gezek gaýtadan çekilýändigine göz ýetiriň.

Indi bolsa komponenti Text-y memo-a geçiriň. Input-a nyşan girizenimizde Text komponentiniň gaýtadan çekilmeýändigine göz ýetiriň.

Türkmen
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkçeЎзбекOʻzbekTiếng Việt
Biz sahypanyň işlemegi, analitika we şahsyýetleşdirmek üçin cookie ulanýarys. Maglumatlaryň işlenişi Gizlinlik syýasaty boýunça amala aşyrylýar.
hemmesini kabul et sazlamak ret et