Ikony bez kompromisů

V Heurece jsme nedávno zapracovali nový facelift našeptávače, na kterém jsem jako frontend developer spolupracoval. A protože se komponenta zobrazuje na všech našich stránkách, byla potřeba, aby byla rychlá. Proto jsme se rozhodli jsme pro React.
O React Hooks je toho napsáno hodně, ale málo se dozvídáme o tom, jak ve skutečnosti správně optimalizovat a profilovat React komponenty. Spousta vývojářů se drží ESLintu a chybně používá React Hooks. Zejména se dopouští chybné předčasné optimalizace. Poradím vám způsoby, jak tomu předejít a jak vůbec zjistit, že je někde performance problém. Sdílím také několik poznatků, díky kterým jsme získali hlubší znalost Reactu.
Toto téma jsem mluvil na nedávné konferenci Frontendisti. Podívejte se na přednášku s prezentací nebo si přečtěte shrnutí níže.
Při vývoji nové změny nebo featury zjistíme, jestli potřebujeme optimalizovat výkon a pak ji provedeme. Neděláme předčasné optimalizace, pokud si nejsme jisti, že je to opravdu potřeba na základě měření.
Vhodný přístup zahrnuje:
Neeliminovat zbytečné rendery komponent, které nejsou náročné na vykreslení, protože to má svou cenu ( přehlednost v kódu a případně zhoršení performance).
Každý render má vlastní stav, props, handlery a efekty.
Je třeba se snažit optimalizovat spíše architektonicky než pomocí memoizace.
Architektonické techniky:
Může předčasná optimalizace škodit?
při použití React.memo u komponenty, která má hodně props a často se re-renderuje, dochází k častým porovnáváním props a to zpomaluje render.
S jakými problémy jsi se tam setkal?
Snažil jsem se lhát ESLintu a docházelo k zacyklení aplikace, to mě vedlo ke správnému použití Hooku a změně architektury aplikace v kontextu našeptávače.
Kdy lhát useEffectu?
Pouze v případě, že opravdu víme, co děláme (závislost je statická, memoizovaná a nemění se nám).
Co nás čeká v budoucnu v Reactu?
Novinky souvisí s novými featurami Reactu:
Seznam kategorií