<Profiler>
<Profiler> ti permette di misurare programmaticamente le prestazioni di renderizzazione di un albero React.
<Profiler id="App" onRender={onRender}>
<App />
</Profiler>Reference
<Profiler>
Avvolgi un albero di componenti in un <Profiler> per misurare le prestazioni di renderizzazione.
<Profiler id="App" onRender={onRender}>
<App />
</Profiler>Props
id: Una stringa che identifica la parte dell’interfaccia utente che stai misurando.onRender: Unacallback onRenderche React chiama ogni volta che i componenti nell’albero profilato si aggiornano. Riceve informazioni su cosa è stato renderizzato e quanto tempo ha richiesto.
Caveats
- Il profiling aggiunge un overhead aggiuntivo, quindi è disabilitato di default nella build di produzione. Per attivare il profiling in produzione, devi abilitare una build di produzione speciale con il profiling attivato.
onRender callback
React chiamerà la tua callback onRender con informazioni su cosa è stato renderizzato.
function onRender(id, phase, actualDuration, baseDuration, startTime, commitTime) {
// Aggrega o registra i tempi di renderizzazione...
}Parameters
id: La stringa della propiddell’albero<Profiler>appena sottoposto a commit. Ti permette di identificare quale parte dell’albero ha effettuato il commit se usi più profiler.phase:"mount","update"o"nested-update". Ti indica se l’albero è stato montato per la prima volta o renderizzato di nuovo a causa di un cambiamento di props, state o Hooks.actualDuration: Il numero di millisecondi impiegati per renderizzare il<Profiler>e i suoi discendenti per l’aggiornamento corrente. Indica quanto bene il sottoalbero sfrutta la memorizzazione (ad esempiomemoeuseMemo). Idealmente questo valore dovrebbe diminuire significativamente dopo il montaggio iniziale, poiché molti discendenti dovranno renderizzare di nuovo solo se cambiano le loro props specifiche.baseDuration: Il numero di millisecondi stimati per renderizzare di nuovo l’intero sottoalbero<Profiler>senza ottimizzazioni. Viene calcolato sommando le durate di renderizzazione più recenti di ogni componente nell’albero. Questo valore stima il costo nel caso peggiore di renderizzazione (ad esempio il montaggio iniziale o un albero senza memorizzazione). ConfrontaactualDurationcon questo valore per verificare se la memorizzazione funziona.startTime: Un timestamp numerico relativo al momento in cui React ha iniziato a renderizzare l’aggiornamento corrente.commitTime: Un timestamp numerico relativo al momento in cui React ha effettuato il commit dell’aggiornamento corrente. Questo valore è condiviso tra tutti i profiler in un commit, permettendone il raggruppamento se necessario.
Usage
Misurare programmaticamente le prestazioni di renderizzazione
Avvolgi il componente <Profiler> attorno a un albero React per misurare le prestazioni di renderizzazione.
<App>
<Profiler id="Sidebar" onRender={onRender}>
<Sidebar />
</Profiler>
<PageContent />
</App>Richiede due props: un id (stringa) e una callback onRender (funzione) che React chiama ogni volta che un componente nell’albero effettua il commit di un aggiornamento.
Misurare diverse parti dell’applicazione
Puoi usare più componenti <Profiler> per misurare diverse parti della tua applicazione:
<App>
<Profiler id="Sidebar" onRender={onRender}>
<Sidebar />
</Profiler>
<Profiler id="Content" onRender={onRender}>
<Content />
</Profiler>
</App>Puoi anche annidare componenti <Profiler>:
<App>
<Profiler id="Sidebar" onRender={onRender}>
<Sidebar />
</Profiler>
<Profiler id="Content" onRender={onRender}>
<Content>
<Profiler id="Editor" onRender={onRender}>
<Editor />
</Profiler>
<Preview />
</Content>
</Profiler>
</App>Sebbene <Profiler> sia un componente leggero, dovrebbe essere usato solo quando necessario. Ogni utilizzo aggiunge un overhead di CPU e memoria all’applicazione.