Memoize o valor não lido em todo o aplicativo, corrija um efeito de auto-retriggering

Performancekamo-internal
Navios
26 de agosto de 2026 às 02:40 UTC
Autor
kamo
Enviar
d8ab7f4

UnreadContext publicou um objeto de quatorze membros como seu valor de contexto, então Reaja viu a mudança de contexto em cada renderização do provedor e acordou cada consumidor à mão As mesmas contas. É montado app-wide dentro de AuthedChrome e lido pelo navegador emblemas, superfícies de bate-papo e cabeças de feitiço, então "todo consumidor" é um grande fã. Tudo quatorze membros são useCallback'd ou estado derivado, então memorizar muda apenas o valor quando algo que um consumidor pode realmente ver se moveu. VirtualMessageList's load-more effect listed `virtualizer.getVirtualItems()` in its own matriz de dependência. Esse método constrói e retorna um novo array em cada chamada, então o dependência era uma nova referência em cada renderização e o efeito re-ran cada vez, re-comparando índices já comparados — na lista de mensagens, em cada rolagem moldura. O que realmente depende é o quão longe a lista foi rolada, que é um número; depende desse número agora. A mesma chamada também é reutilizada para as linhas em vez de ser feita uma segunda vez mais abaixo a renderização. Verificado: tsc -- noEmit clean over UnreadContext, VirtualMessageList e AuthedChrome com suas importações transitivas; todos os 9 guardas passam; 36 testes nas suítes de chat e mensagens Passo.

Todas as alterações

Como o que vês no transporte?

Cada uma dessas atualizações pousa automaticamente em seu espaço de trabalho. Comece grátis e veja crescer semana após semana.

Começar Livre Para SempreVer Preços