Одно приходящее сообщение не должно пересказать всю историю

Performancekamo-internal
Порезанный
26 августа 2026 г. в 02:18 UTC
Автор
kamo
Обещать
0aee8b0

Часть 5 аудита эффективности на стороне клиента. MessageList отображает каждое загруженное сообщение в MessageBubble, и MessageBubble не был загружен. Памятный. С 300 открытыми сообщениями одно прибывающее сообщение или индикатор ввода Переворачивание или изменение состояния, вызванное прокруткой, означало 300 пузырьковых рендеров, каждый из которых MUI/Emotion subtree с собственными вызовами Tooltip, Menu и formatter Изменились остальные 299. Запоминание пузыря само по себе не помогло бы, и это та часть, которую стоит написать. вниз. Переведенный ряд построен '{...m, текст: ts.translated Текст внутри карты, так что Это был свежий объект на каждом рендере, и неглубокое сравнение никогда не могло ударить ни за что. Переведенное сообщение — памятка выглядела бы прикладной и ничего не делала. Пузырь сообщения строятся один раз за историю / изменение перевода сейчас, и непереводимые строки проходят Первоначальный объект, который был уже стабилен. Еще три вещи были пересчитаны на рендер, две из них на строку: - "предпочтение-снижение-движение" было прочитано с помощью вызова matchMedia в корпусе рендеринга. Это а использовать подписку SyncExternalStore сейчас, которая как дешевле, так и реально живет — Старая форма никогда не замечала, чтобы кто-то менял обстановку, потому что ничего не было. Перечитал, чтобы перечитать. Последнее собственное неснятое сообщение пришло из полного «фильтра» по истории. Каждый рендер. Он меняется только тогда, когда история меняется, и обратный скан находит его. без выделения. Неудачный перевод - это одна и та же строка для каждой строки и был Форматируется внутри карты. Поднят. ResizeObserver намеренно не тронут. Переключая его, чтобы наблюдать за свитком контейнер вместо элементов сообщения будет выглядеть как упрощение ломать автопрокрутку: собственный пограничный ящик контейнера не меняется при росте содержания; Только его свиток Height делает, а ResizeObserver не сообщает об этом. Проверено: tsc — noEmit Clean over MessageList, MessageBubble и ChatBox транзитный импорт; 63 теста проходят через пакеты чата, включая: MessageRowIdentity, который утверждает, что отправленное сообщение сохраняет тот же элемент строки, когда Идентификатор сервера заменяет локальный — точная регрессия, вызванная плохой запиской.

Все изменения

Как вы видите судоходство?

Каждое из этих обновлений автоматически попадает в ваше рабочее пространство. Начните бесплатно и смотрите, как он растет неделю за неделей.

Начните бесплатно навсегдаПосмотреть цены