- Verschifft
- 26. August 2026 um 02:18 UTC
- Autor
- kamo
- Ausschuss
- 0aee8b0
Batch 5 des kundenseitigen Leistungsaudits. MessageList ordnet jede geladene Nachricht an eine MessageBubble ab, und MessageBubble war es nicht memoisiert. Mit 300 Nachrichten geöffnet, eine ankommende Nachricht oder die Eingabeanzeige Flipping, oder eine scroll-getriebene Zustandsänderung - bedeutete 300 Blasen-Renderungen, jeder ein MUI/Emotion Subtree mit eigenem Tooltip, Menü und Formatierer ruft, wenn nichts über die anderen 299 hatte sich geändert. Die Blase allein zu erinnern, hätte nicht geholfen, und das ist der Teil, den es wert ist, geschrieben zu werden nach unten. Eine übersetzte Zeile gebaut .{ ...m, Text: ts.translatedText . innerhalb der Karte, so dass es war ein frisches Objekt auf jedem Render und ein seichter Vergleich konnte nie für eine getroffen übersetzte Nachricht - das Memo hätte sich beworben und nichts getan. Die Blase Nachrichten werden jetzt einmal pro Geschichte/Übersetzungsänderung erstellt, und ungeübersetzte Zeilen passieren das ursprüngliche Objekt geradeaus, das bereits stabil war. Drei weitere Dinge wurden pro Render veröffentlicht, zwei davon pro Reihe: - "Präfers-reduced-Motion" wurde mit einem MatchMedia-Aufruf im Render-Körper gelesen. Es ist ein NutzungSyncExternalStore-Abonnement jetzt, das sowohl billiger ist und tatsächlich live die alte Form nie bemerkte ein Mitglied, das die Einstellung änderte, weil nichts erneut gerenderte, um es noch einmal zu lesen. - Die letzte eigene nicht entfernte Nachricht kam von einem vollen "Filter" über die Geschichte auf jeder Render. Es ändert sich nur, wenn die Geschichte tut, und ein Rückwärtsscan findet es ohne Zuweisung. - Der fehlgeschlagene Tooltip ist für jede Zeile der gleiche String und wurde formatiert innerhalb der Karte. Hoisted. Der ResizeObserver ist bewusst unberührt. Schalten Sie es, um die Schriftrolle zu beobachten Container statt der Nachricht Elemente würde wie eine Vereinfachung aussehen und würde Break Auto-Scroll: Die eigene Border-Box des Containers ändert sich nicht, wenn der Inhalt wächst, nur sein scrollHeight tut es, und ResizeObserver berichtet das nicht. Verifiziert: tsc --noEmit clean over MessageList, MessageBubble und ChatBox mit ihren Transitimporte; 63 Tests über die Chat-Suiten bestehen, einschließlich messageRowIdentity, die behauptet, dass eine gesendete Nachricht das gleiche Zeilenelement behält, wenn die Server-ID ersetzt die lokale - die genaue Regression, die ein schlechtes Memo verursachen würde.