⊗jsrtPmHkUCb 16 of 47 menu

React-daky performansi optimizasiýa gurşagy useCallback

Bu sapakda biz performansy optimizasiýa etmek üçin aşakdaky gurşagy gözden geçireris useCallback.

useCallback gurşagy API useMemo-a meňzeýär, özgerişi şonda, birinjisi ekran täzeden çyzylýan wagtynda bahany keşirýär, ikinjisi bolsa - call-back. Bu bize mümkin bolmadyk wagtynda resurs talap edýän funksiýalary täzeden işletmekden saklanmaga mümkinçilik berýär we funksiýany bermek çaga komponentlerinde ulanmak mümkin.

Geliň mysal üsti bilen giňişleýin düşüneliň. Ilki bilen komponent App döredeliň we onda ýörite ýagdaý num goýuň:

const [num, setNum] = useState(0);

Geliň bir düwmämiz bolsun, basmak bilen num artyp 1 we bir abzas, onda biz num-yň bahasyny çykararys:

return ( <div> <button onClick={() => setNum(num + 1)}>bas</button> <p>basmalar: {num}</p> </div> );

Indi bolsa, guman edeliň, bizde App-da başga bir sanaw elementler bilen çykarylýar, biz oňa goşup başga bir düwmäni basmak bilen. Bulary saklamak üçin ýörite ýagdaý items goýarys:

const [items, setItems] = useState([]);

Soň bolsa addItem funksiýasyny ýazarys olary goşmak üçin:

function addItem() { setItems([...items, 'täze element']); }

Indi bolsa görkezme üçin kody ýazalyň sanawyň elementlerini we ony çaga komponent Items-a çykaralyň, görnüşinde ýollary elementleriň sanawyny we olary goşmak üçin funksiýany alyar. Unutman konsol çykaryşyny goşuň, ýörite ýagdaý Items haçan täzeden çyzylýandygy görmek üçin:

function Items({ items, addItem }) { const result = items.map((item, index) => { return <p key={index}>{item}</p>; }); console.log('Items täzeden çyzylýar'); return ( <div> <h3>Biz elementler</h3> {result} <button onClick={addItem}>element goş</button> </div> ); } export default Items;

Items-y komponentiň ahyrynda ýerleşdiriň App we oňa sanawy beriň items we elementleri goşmak üçin funksiýa addItem:

return ( <> <div> <button onClick={() => setNum(num + 1)}>bas</button> <p>basmalar: {num}</p> <br /> </div> <Items items={items} addItem={addItem} /> </> );

Indi düwmeleri basyp görüň we num ösýändigine we täze elementler sanawa goşulýandyklaryna göz ýetiriň. Konsoly açanymyzda, göreris biziň sanawymyz her gezek täzeden çyzylýar, hatta biz düwmä basanymyzda, num-y artdyrýan.

Eger kiçi sanaw bolsa, hemmesi gowy, eger guman edilse, ol köpçülikleýin bolup, onda köp zat bar bolsa? Eziz däl - size diýer, sebäbi öňki sapakda biz API memo gözden geçirdik, komponentiň zerur bolmadyk täzeden çyzylmalaryndan saklanmak üçin.

Şeýlelik bilen, biz komponenti Items-y memo-a gurup işleriň hemmesini edeliň. Bu ýerde hem derrew edip bolýar Items-y eksport edende:

export default memo(Items);

memo-y import etmegi unutman:

import { memo } from 'react';

Indi konsoly açalyň we düwmeleri basyp görüň. Heziller boşuna! Biz komponenti ýatladýan, emma düwmäni basmak bilen 'bas' komponent Items her gezek täzeden çyzylýar.

Sebäbi şonda, ata komponent täzeden çyzylýanda, onuň funksiýalary täzeden döredilýär - bu biziň funksiýamyza addItem, üstünlikli berýäris Items.

Şu wagt bize gurşak kömek eder useCallback. Geliň ulanýalyň. Ilki bilen ony import edeliň App:

import { useCallback } from 'react';

Soň bolsa ýöne funksiýanyň deklarasiýasyny üýtgedeliň addItem Funksiýa ekspressiýasy, birinji parametr hökmünde görkezeliň useCallback üçin funksiýamyzy call-back görnüşinde. Ikinji parametr hökmünde çyzykly ähmiýetli möhürde görkezeliň baglylyklary - hemmesi reaksiýa ediji üýtgeýänler, funksiýada gatnaşýan, bizde sanaw items:

const addItem = useCallback(() => { setItems(() => [...items, 'Täze element']); }, [items]);

Taýýar! Şeýlelik bilen, biz funksiýany ýatladýan. Düwmeleri täzeden basyp görüň we indi düwmäni basmak bilen görüň 'bas' biz çaga komponent täzeden çyzylmaýar.

Komponent dörediň App, goýuň onda bir tekstli abzas. Goýuň ýörite ýagdaý başlangyç bahasy bilen 'tekst' we ony abzasynda çykaryň. Abzasa basmak bilen oňa tekst ahyrynda goşulýan ýagdaý.

Çaga komponent dörediň Products, onda size düwme bolar täze öndüriji goşmak üçin. Ony App-a ýerleşdiriň. Ata komponentde ýörite ýagdaý dörediň öndürijileriň sanawy bilen we täze goşmak üçin funksiýa öndürijini. Olary ýollary hökmünde beriň çagada, oňa berlen sanawy şu ýerde çykaryň sanawy görnüşinde ul.

Products-da konsola tekst çykaryň 'öndürijiler täzeden çyzylýar'. Products-y memo-a guryň. Abzasa we düwmäni basyp görüň. Göz ýetiriň, abzasa basmak bilen çaga komponent şonda hem täzeden çyzylýar.

Öndürijileri goşmak üçin funksiýany ýatladýan, ony gurşaga gurup useCallback. Abzasa we düwmäni basyp görüň. Göz ýetiriň, abzasa basmak bilen, çaga komponent artyk täzeden çyzylmaýar.

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