O que React Melhores Práticas faz?
Guia abrangente de otimização de performance para aplicações React. Contém 37 regras em 7 categorias, priorizadas por impacto.
Categorias de Regras por Prioridade
| Prioridade | Categoria | Impacto | Prefixo |
|---|---|---|---|
| 1 | Eliminando Waterfalls | CRÍTICO | async- |
| 2 | Otimização do Tamanho do Bundle | CRÍTICO | bundle- |
| 3 | Fetching de Dados no Cliente | MÉDIO-ALTO | client- |
| 4 | Otimização de Re-render | MÉDIO | rerender- |
| 5 | Performance de Renderização | MÉDIO | rendering- |
| 6 | Performance JavaScript | BAIXO-MÉDIO | js- |
| 7 | Padrões Avançados | BAIXO | advanced- |
Referência Rápida
1. Eliminando Waterfalls (CRÍTICO)
async-defer-await- Mova oawaitpara os branches onde é realmente usadoasync-parallel- UsePromise.all()/allSettled()para operações independentes
2. Otimização do Tamanho do Bundle (CRÍTICO)
bundle-dynamic-imports-React.lazy()para componentes pesadosbundle-defer-third-party- Carregue analytics/logging sob demandabundle-conditional- Carregue módulos apenas quando o recurso está ativadobundle-preload- Pré-carregue ao passar o mouse/foco para velocidade percebida
3. Fetching de Dados no Cliente (MÉDIO-ALTO)
client-query-dedup- Use TanStack Query para desduplicação automática de requisiçõesclient-event-listeners- Desduplique listeners de eventos globaisclient-passive-event-listeners- Use listeners passivos para performance de scrollclient-localstorage-schema- Version e minimize dados no localStorage
4. Otimização de Re-render (MÉDIO)
rerender-defer-reads- Não assine estado usado apenas em callbacksrerender-memo- Extraia trabalho pesado em componentes memoizadosrerender-dependencies- Use dependências primitivas em effectsrerender-derived-state- Assine booleanos derivados, não valores brutosrerender-functional-setstate- UsesetStatefuncional para callbacks estáveisrerender-lazy-state-init- Passe função parauseStatepara valores carosrerender-transitions- UsestartTransitionpara atualizações não urgentes
5. Performance de Renderização (MÉDIO)
rendering-animate-svg-wrapper- Anime o wrapperdiv, não o elemento SVGrendering-content-visibility- Usecontent-visibilitypara listas longasrendering-hoist-jsx- Extraia JSX estático para fora dos componentesrendering-svg-precision- Reduza a precisão de coordenadas SVGrendering-activity- Use componenteActivitypara mostrar/esconderrendering-conditional-render- Use ternário, não&¶ condicionais
6. Performance JavaScript (BAIXO-MÉDIO)
js-batch-dom-css- Agrupe mudanças de CSS via classes oucssTextjs-index-maps- ConstruaMappara buscas repetidasjs-cache-property-access- Faça cache de propriedades de objeto em loopsjs-cache-function-results- Faça cache de resultados de funções emMapno nível do módulojs-cache-storage- Faça cache de leituras delocalStorage/sessionStoragejs-combine-iterations- Combine múltiplosfilter/mapem um único loopjs-length-check-first- Verifique o tamanho do array antes de comparação carajs-early-exit- Retorne cedo das funçõesjs-hoist-regexp- Içe a criação deRegExppara fora dos loopsjs-min-max-loop- Use loop para min/max em vez desortjs-set-map-lookups- UseSet/Mappara buscas O(1)js-tosorted-immutable- UsetoSorted()para imutabilidade
7. Padrões Avançados (BAIXO)
advanced-event-handler-refs- Armazene handlers de eventos em refsadvanced-use-latest-useLatestpara callbacks de ref estáveis
Como Usar
Cada arquivo de regra em references/ contém: explicação, exemplos de código incorreto/correto e contexto. Leia arquivos individuais conforme necessário.