Memoize el valor no leído en toda la aplicación, arreglar un efecto auto-retriggering

Performancekamo-internal
Se descapó
26 de agosto de 2026 a las 2:40 UTC
Autor
kamo
Compromit
d8ab7f4

UnreadContext publicó un objeto de catorce miembros literalmente como su valor de contexto, así que React vio el cambio de contexto en cada render del proveedor y despertó a cada consumidor a mano ellos los mismos conteos. Se monta en toda la aplicación dentro de AuthedChrome y lee por el nav Las insignias, la puntucha sale a la superficie y las cabezas hex, así que "todo consumidor" es un amplio abanico. Todos catorce miembros son usadosCallback'd o estado derivado, por lo que memoizing cambia el valor solamente cuando algo que un consumidor puede ver realmente se ha movido. Mensaje VirtualEl efecto carga-más de la listado .virtualizer.getVirtualItems () en su propio Distribuidora de dependencia. Ese método construye y devuelve una NUEVA matriz en cada llamada, por lo que el La dependencia era una nueva referencia en cada renderización y efecto que se re-ran cada vez, los índices de recomidad que ya había comparado en la lista de mensajes, en cada pergífico Marco. De lo que realmente depende es de hasta qué parte se ha desplazado la lista, que es una número; depende de ese número ahora. La misma llamada también se reutiliza para las filas en lugar de hacerse una segunda vez más abajo. Verificado: tsc --noEmita limpio sobre UnreadContext, VirtualMesageList y AuthedChrome con sus importaciones transitivas; los 9 guardias pasan; 36 pruebas a través de las suites de chat y mensajes pase.

Todos los cambios

Como lo que ves enviaste?

Cada una de estas actualizaciones aterriza en su espacio de trabajo automáticamente. Empieza gratis y verlo crecer semana tras semana.

Arranzar gratis para siempreVer Precios