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: