⊗jsrtPmHkAMe 15 of 47 menu

React'ta memo API'si

Bir sonraki kancayı ele almadan önce, bileşenin prop'ları değişmediği sürece yeniden render edilmesini önlememize yardımcı olan faydalı memo API'sinden de bahsetmek gerekir.

Bunu bir örnekle inceleyelim. İçinde ad ve soyad girildiğini varsayacağımız iki input bulunan bir App bileşeni oluşturalım:

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

Bileşenin başında onlar için state'ler ekleyelim:

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

Bir de alt bileşen yapalım Child.js, girilen adın görüntüleneceği bir selamlama çıktısı versin. Ayrıca, bu bileşen her render edildiğinde konsola 'child render' dizesi yazdırılsın:

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

Child'ı ana bileşenin son inputundan sonraki kısmına ekleyelim ve ona prop olarak adı iletelim:

<Child name={name} />

Onu ana bileşene içe aktaralım:

import Child from './Child';

Şimdi konsolu açalım ve input alanlarına ad ve soyad girmeye başlayalım. Burada soyad alanına karakter girildiğinde bile, alt bileşenimizin her seferinde yeniden render edildiğini göreceğiz. Herhangi bir sorun yok, sonuçta küçük bir bileşen. Ama ya bu bileşen çok fazla veri görüntülüyor olsaydı ve aynı zamanda her seferinde yeniden render ediliyor olsaydı bir düşünün.

Şimdi ise alt bileşeni memo ile sarmalayalım ve render işleminin nasıl değiştiğine bakalım. Öncelikle içine memo'yu içe aktaralım:

import { memo } from 'react';

Ardından yeni bir değişken oluşturalım ve ona memo ile sarmalanmış Child'ımızı atayalım. Şu şekilde bir fonksiyon ifadesi elde edeceğiz:

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

Konsolu açalım ve tekrar ad ve soyadı input alanlarına girelim. Şimdi soyad girildiğinde, alt bileşenimizin yeniden render edilmediğini görüyoruz.

Unutulmamalıdır ki bu, prop'lar değişmese bile bileşen tarafından kullanılan state'ler veya değişiklik kullanan context değişirse çalışmayacaktır.

Bu derste yaptığımız App bileşeninin kodunu alın, içinde sadece ilk inputu bırakın. İçinde 'long text' metni olan bir paragraf bulunduran bir React bileşeni Text oluşturun ve onu App bileşeninde inputun altına yerleştirin.

Text bileşenine console.log('text render'); satırını ekleyin. Inputa karakter girildiğinde Text bileşeninin her seferinde yeniden render edildiğinden emin olun.

Şimdi Text bileşenini memo ile sarmalayın. Inputa karakter girildiğinde Text bileşeninin tekrar yeniden render edilmediğinden emin olun.

Türkçe
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenЎзбекOʻzbekTiếng Việt
Web sitesinin çalışması, analiz ve kişiselleştirme için çerezleri kullanıyoruz. Veri işleme, Gizlilik Politikası'na uygun olarak gerçekleşir.
tümünü kabul et özelleştir reddet