Memoize o całej aplikacji nieczytana wartość, napraw efekt samoodrzutowy

Performancekamo-internal
Szycy
26 sierpnia 2026 02:40 UTC
Autor
kamo
Pochęt się
d8ab7f4

UnreadContext opublikował czternastoosobową literę dosłowną jako jego wartość kontekstową, więc React Zobaczył zmianę kontekstu na każdym renderowaniu dostawcy i obudził każdego konsumenta do ręki To samo się liczy. Jest zamontowany w całej aplikacji wewnątrz AuthedChrome i czytany przez nav Odznaki, powierzchnie rozmów i głowice hex, więc "każdy konsument" jest szerokim wentylatorem. Wszystko Czternastu członków to useCallback'd lub stan pochodny, więc metowanie zmienia tylko wartość Kiedy coś, co konsument może zobaczyć, poruszyło się. Efekt obciążenia VirtualMessageList wpisany na listę "wirtualizer.getVirtualItems()" - Tablica zależności. Ta metoda buduje i zwraca nową tablicę na każdym wywołaniu, więc zależność była świeżym odniesieniem do każdego renderowania i efektu za każdym razem, Porównanie indeksów, które już porównał — na liście wiadomości, na każdym zwiastu Ramka. To, co naprawdę zależy, to jak daleko przewińczana lista jest jedna Liczba, to zależy od tej liczby teraz. To samo połączenie jest również ponownie używane do rzędów, zamiast być wykonane po raz drugi dalej W dół renderu. Zweryfikowano: tsc --noEmituj czyste przez UnreadContext, VirtualMessageList i AuthedChrome z ich import tranzytowy; wszystkie 9 strażników przechodzi; 36 testów w gabinezonach czat i wiadomości Przejście.

Wszystkie zmiany

Jak to, co widzisz żeglugę?

Każda z tych aktualizacji automatycznie ląduje w miejscu pracy. Zacznij za darmo i obserwuj, jak rośnie tydzień po tygodniu.

Start Free ForeverZobacz ceny