- Navios
- 26 de agosto de 2026 às 02:18 UTC
- Autor
- kamo
- Enviar
- 0aee8b0
Lote 5 da auditoria de desempenho do cliente. MessageList mapeia todas as mensagens carregadas para uma MessageBubble, e MessageBubble não foi memorizado. Com 300 mensagens abertas, uma mensagem de chegada – ou o indicador de digitação flipping, ou uma mudança de estado orientada por rolagem — significava 300 renderizações de bolha, cada uma MUI/Emotion subtree carregando sua própria dica, Menu e chamadas de formatação, quando nada sobre os outros 299 tinham mudado. Memória da bolha sozinho não teria ajudado, e essa é a parte que vale a pena escrever Para baixo. Uma linha traduzida construída `{ ...m, text: ts.translated Texto dentro do mapa. era um objeto novo em cada renderização e uma comparação superficial nunca poderia bater para qualquer mensagem traduzida — o memorando pareceria aplicado e não faria nada. A bolha as mensagens são construídas uma vez por mudança de histórico/tradução agora, e as linhas não traduzidas passam o objeto original em linha reta, que já estava estável. Mais três coisas estavam sendo recalculadas por render, duas delas por fileira: - `prefers-reduced-motion` foi lido com uma correspondênciaMedia chamada no corpo renderizado. Está. a utilizaçãoSync ExternalStore subscrição agora, que é tanto mais barato e realmente vivo - a forma antiga nunca notou um membro mudando a configuração, porque nada re-rendered para re-ler. - A última mensagem não removida veio de um filtro completo sobre a história em Cada renderização. Ele só muda quando o histórico o faz, e uma varredura reversa o encontra sem afectação. - A dica de tradução falhada é a mesma string para cada linha e estava sendo formatado dentro do mapa. Içado. O ResizeObserver está deliberadamente intocado. Alternando- o para observar o rolagem recipiente em vez dos elementos de mensagem iria parecer uma simplificação e quebrar automaticamente: a caixa de borda do próprio recipiente não muda quando o conteúdo cresce, somente sua altura de rolagem faz, e ResizeObserver não relata isso. Verificado: tsc -- noEmit clean over MessageList, MessageBubble e ChatBox com seus importações transitivas; 63 testes nas suites de chat passam, incluindo messageRowIdentity, que afirma que uma mensagem enviada mantém o mesmo elemento de linha quando o servidor id substitui o local - a regressão precisa que um memorando ruim causaria.