Teknologian jakaminen

[Käännös] Reactjs Performance

2024-07-08

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Englannin kielen taitoni ovat keskinkertaisia ​​ja olen erittäin asiantunteva, joten käännöksiä on paljon, jos et voi uskoa minua

Alkuperäinen osoite:https://facebook.github.io/react/docs/advanced-performance.html


###Suorituskyvyn optimointi

Aina kun kehittäjät päättävät käyttää reactia todellisessa projektissa, he kysyvät ensin kysymyksen: Tekeekö reactin käyttö projektista nopeamman, joustavamman ja helpompia ylläpitää. Lisäksi, aiheuttaako käyttöliittymän uudelleen renderöiminen aina, kun tilatiedot muuttuvat, suorituskykyä pullonkaulan? Sisäisesti React varmistaa suorituskyvyn käyttämällä hienovaraisia ​​tekniikoita minimoimaan kalliit DOM-toiminnot, jotka aiheuttavat käyttöliittymäpäivityksiä joka kerta.

####Vältä suoraa vaikutusta DOM:iin
React toteuttaa virtuaalisen DOM-kerroksen, jota käytetään kartoittamaan selaimen natiivi DOM-puu. Tämän virtuaalisen DOM-kerroksen kautta React voi välttää suoran DOM:n käytön, koska suoraan toimivan selaimen DOM:n nopeus on paljon alhaisempi kuin toimivien JavaScript-objektien. Aina kun komponentin ominaisuudet tai tila muuttuvat, react rakentaa muistiin uuden virtuaalisen domin ja vertaa sitä alkuperäiseen vanhaan määrittääkseen, tarvitseeko selaimen dom-puuta päivittää, mikä optimoi dom:n renderöinnin yhtä paljon kuin mahdollinen suorituskyvyn menetys.

Tämän lisäksi react tarjoaa komponenttien elinkaaritoiminnot.shouldComponentUpdate, komponentti kutsuu tätä funktiota ennen kuin se päättää hahmontaa uudelleen (kun virtuaalinen DOM-vertailu on valmis ja lopullinen DOM on luotu. Tämä toiminto antaa kehittäjälle valtuudet hahmontaa uudelleen, ja funktio palauttaa oletuksena suoraan).true, joka osoittaa, että DOM-päivitys käynnistetään oletuksena suoraan:

shouldComponentUpdate: function(nextProps, nextState) {
	return true;
}

On syytä huomata, että react kutsuu tätä toimintoa hyvin usein, joten jos aiot toteuttaa tämän toiminnon logiikan itse, varmista suorituskyky mahdollisimman paljon.

Sinulla on esimerkiksi chat-sovellus, jossa on useita viestejä, jos vain yksi niistä muuttuu tällä hetkellä, jos otat käyttöön seuraavanshouldComponentUpdate, react välttää niiden viestien uudelleenrenderöimisen, jotka eivät ole muuttuneet tilanteen mukaan:

shouldComponentUpdate: function(nextProps, nextState) {
	// TODO: return whether or not current chat thread is different to former one.
	// 根据实际情况判断当前帖子的状态是否和之前不同
}

Lyhyesti sanottuna React välttää kalliita DOM-toimintoja niin paljon kuin mahdollista ja antaa kehittäjille mahdollisuuden puuttua tähän toimintaan.

####shouldComponentUpdate toiminnassa
Tässä on esimerkki alielementtejä sisältävästä komponentista, kuten alla on esitetty: