Diagnosticare e correggere i re-render lenti in React

Scopri perché un componente React è lento, misura con il Profiler e applica le correzioni giuste (posizione dello stato, memo, virtualizzazione, transizioni) con codice prima e dopo. Pensato per ChatGPT, Claude, Gemini e Microsoft Copilot. Include 4 variabili personalizzabili e puoi copiarlo gratuitamente con un clic.

Avanzato · Codice · In attesa di revisione editoriale

Prompt

Agisci come specialista di prestazioni React che diagnostica prima di ottimizzare.

Contesto:
- Codice coinvolto: {{codice}}
- Sintomo osservato: {{sintomo}}
- Dati di misurazione (se presenti): {{misurazioni}}
- Versione di React: {{versione_react}}

Se il codice non basta a capire da dove arrivano props o stato, chiedimi i componenti padre o il context prima di proporre modifiche.

Consegna:
1. Ipotesi ordinate per probabilità sul perché dei re-render o del lavoro in eccesso (stato troppo in alto, valore del context che cambia a ogni render, oggetti o funzioni nuovi a ogni render, liste lunghe non virtualizzate, calcoli costosi nel render, key instabili).
2. Come confermare ogni ipotesi con il Profiler dei React DevTools (cosa registrare, cosa guardare nel flamegraph e in «perché è stato renderizzato») e, se utile, con il pannello Performance del browser.
3. Le correzioni, dalla più semplice alla più complessa: spostare lo stato in basso, passare il contenuto come children, dividere il context, useMemo/useCallback/memo solo dove la misurazione lo giustifica, useDeferredValue o useTransition per i campi di testo, virtualizzazione delle liste.
4. Codice prima e dopo per ogni modifica applicata, con l'effetto atteso.
5. Come verificare il miglioramento con la stessa misurazione e quale soglia considerare sufficiente.
6. Cosa non fare: avvolgere tutto in memo, ottimizzare senza misurare o sacrificare la leggibilità per guadagni minimi.

Vincoli:
- Non inventare tempi né miglioramenti percentuali; se non ho misurazioni, spiega come ottenerle e lascia [DA COMPLETARE].
- Se la versione usa React Compiler, tieni conto che memorizza già automaticamente e adatta i consigli.
- Mantieni identico il comportamento funzionale.

Formato: diagnosi, piano di misurazione, modifiche con blocchi di codice e una checklist finale di verifica.

Come usarlo

  1. Incolla il componente lento e i suoi padri diretti. 2. Descrivi il sintomo con precisione (quale azione, quanto ci mette, su quale dispositivo). 3. Registra una sessione del Profiler, incolla ciò che vedi e applica le modifiche una alla volta misurando ogni volta.

Esempio d'uso

Codice: TabellaOrdini.tsx con 2000 righe e un filtro di testo · Sintomo: digitare nel filtro è lento su un portatile di fascia media · Misurazioni: nessuna · Versione: React 18.

Esempio di risultato

Ipotesi (dalla più alla meno probabile)

  1. Ogni tasto filtra tutte le 2000 righe e le ri-renderizza nello stesso render urgente.
  2. Le righe non sono memoizzate e ricevono oggetti nuovi a ogni render.
  3. Manca la virtualizzazione: il DOM contiene tutte le 2000 righe.

Prima misura

In React DevTools → Profiler, registra mentre digiti 5 lettere. Cerca commit lunghi in TabellaOrdini e attiva «Record why each component rendered». Durata per commit prima della modifica: [DA COMPLETARE].

Modifica 1: separare la digitazione dal filtro

import { memo, useDeferredValue, useMemo, useState } from 'react';

export function TabellaOrdini({ ordini }: { ordini: Ordine[] }) {
  const [filtro, setFiltro] = useState('');
  const filtroDifferito = useDeferredValue(filtro);
  const visibili = useMemo(
    () => ordini.filter((o) => o.cliente.toLowerCase().includes(filtroDifferito.toLowerCase())), // [DA COMPLETARE: campo reale]
    [ordini, filtroDifferito],
  );
  return (
    <>
      <input value={filtro} onChange={(e) => setFiltro(e.target.value)} aria-label="Filtra ordini" />
      <Righe ordini={visibili} />
    </>
  );
}

const Righe = memo(function Righe({ ordini }: { ordini: Ordine[] }) {
  return <table><tbody>{ordini.map((o) => <RigaOrdine key={o.id} ordine={o} />)}</tbody></table>;
});

Il campo si aggiorna subito e la lista viene ricalcolata con priorità più bassa; memo evita di ri-renderizzare le righe finché il valore differito non cambia. Se resta lento, il passo successivo è la virtualizzazione…

Dati chiave

Categoria
Programmazione e sviluppo · React
Tipo di output
Codice
Livello
Avanzato
Pensato per
ChatGPT, Claude, Gemini e Microsoft Copilot
Verificato in
In attesa di verifica editoriale
Variabili
Codice coinvolto, Sintomo, Dati di misurazione e Versione di React
Lingua
Italiano
Prezzo
Gratuito, senza registrazione
Aggiornato
07/11/2026

Domande frequenti

Devo mettere useMemo e useCallback ovunque?

No. Hanno un costo proprio e complicano il codice. Usali quando il Profiler mostra che un calcolo o un re-render specifico pesa, o quando serve un riferimento stabile perché memo funzioni.

Quando serve virtualizzare una lista?

Quando centinaia o migliaia di elementi complessi vengono renderizzati insieme e il Profiler o il pannello Performance mostrano che il costo viene dal montaggio di quei nodi. Con liste brevi raramente conviene.

A cosa serve questo prompt?

Scopri perché un componente React è lento, misura con il Profiler e applica le correzioni giuste (posizione dello stato, memo, virtualizzazione, transizioni) con codice prima e dopo.

Con quali strumenti di IA funziona?

È pensato per ChatGPT, Claude, Gemini e Microsoft Copilot. Non lo abbiamo ancora verificato in questi strumenti, quindi i risultati possono variare da uno all'altro.

Come personalizzo il prompt?

Clicca su «Personalizza» e compila le variabili (Codice coinvolto, Sintomo, Dati di misurazione e Versione di React). Il testo si aggiorna all'istante e poi puoi copiarlo con un clic. I valori vengono salvati solo nel tuo browser.

Serve esperienza per usarlo?

È di livello avanzato: è pensato per persone con esperienza nell'argomento, in grado di valutare e regolare il risultato.

Questo prompt è gratuito?

Sì. Tutti i prompt di HomeCasa Prompts sono gratuiti, senza registrazione né abbonamento. Puoi usarli anche in progetti professionali.

Posso fidarmi dell'output dell'IA?

Consideralo una bozza di alta qualità: verifica sempre dati, cifre e affermazioni importanti prima di pubblicare o prendere decisioni.

Prompt correlati