Percorso per React.useCallback()

Devi aver sentito questo molto spesso che dovremmo memorizzare le funzioni di callback usando useCallback() per evitare inutili re-rendering dei componenti.

Ma cos'è esattamente useCallback() 🤔 . Ci hai mai pensato?

Lascia che ti aiuti a capire di cosa si tratta e dove utilizzarlo correttamente.

Per prima cosa comprendiamo i controlli di uguaglianza delle funzioni

Prima di vedere come lo usiamo, vediamo cosa risolve. Scriviamo una semplice funzione che restituisca una funzione:

mul1 e mul2 sono funzioni che moltiplicano due numeri. Sono stati creati dalla funzione di moltiplicazione .

Le funzioni in JavaScript sono l'oggetto normale. Le funzioni mul1 e mul2 condividono lo stesso codice ma sono oggetti funzione diversi. Confrontandoli valutiamo falso .

È proprio così che funzionano gli oggetti JavaScript. Un oggetto (incluso un oggetto funzione) è uguale solo a se stesso.

Ora lo scopo di useCallback()

React.useCallback() risolve sostanzialmente il controllo di uguaglianza delle funzioni che abbiamo visto sopra. Diversi oggetti funzione che condividono lo stesso codice vengono spesso creati all'interno dei componenti di React:

handleClick (funzione in linea) è un oggetto funzione diverso su ogni rendering di CustomComponent .

E non c'è alcun danno ad avere funzioni dichiarate in linea con React Components. Non avrà un impatto negativo sulle prestazioni.

Ma in alcuni casi, è necessario mantenere una singola istanza di funzione tra i rendering:

  1. Come quando la funzione ha uno stato interno, ad esempio quando la funzione è antirimbalzo/limitata

2. Un componente funzionale avvolto all'interno React.memo()accetta un oggetto funzione prop.

Se un componente figlio che accetta un callback si basa su un controllo di uguaglianza referenziale (ad esempio: React.memo() o shouldComponentUpdate() ) per evitare inutili re-render quando i suoi props cambiano, allora è importante che tutti gli oggetti callback non cambino tra rende.

Pertanto, nel componente padre, possiamo avvolgere la proprietà di callback in useCallback() e garantire che stia passando lo stesso oggetto funzione nel componente figlio ottimizzato.

3. Quando l'oggetto funzione è una dipendenza da altri hook, ad es useEffect(..., [callback])

Nell'esempio sopra, se myFunction fa qualcosa che provoca la ricostruzione di MyComponent (ad esempio se fa qualcosa che cambia gli oggetti di scena o lo stato) ti porterà in uno stato di ciclo infinito.

Per evitare ciò, avvolgiamo useCallback() attorno a una funzione e definiamo le sue dipendenze per garantire che la funzione venga ricreata solo se le sue dipendenze sono cambiate. Quindi la funzione non viene più dichiarata ad ogni ciclo di rendering

Quindi i casi d'uso di cui sopra sono quando, useCallback hook è utile: dati gli stessi valori di dipendenza, l'hook restituisce la stessa istanza di funzione tra i rendering e aumenta le prestazioni.

Spero che ti abbia aiutato a capire che in realtà è useCallback()! 😊

Grazie per aver letto questo articolo. Se ti è piaciuto, non esitare a fare clic sul pulsante 👏 per aiutare gli altri a trovarlo.

Suggested posts

Evitare le conseguenze devastanti di un ictus: imparare dal viaggio di una famiglia.

Evitare le conseguenze devastanti di un ictus: imparare dal viaggio di una famiglia.

Introduzione Un ictus è un'emergenza medica che può colpire chiunque in qualsiasi momento. Si verifica quando il flusso sanguigno verso una parte del cervello viene interrotto, portando a un'improvvisa perdita della funzione cerebrale.

Jest: un potente framework di test JavaScript

Jest: un potente framework di test JavaScript

Il test è una parte essenziale dello sviluppo del software. Assicura che il codice sia affidabile, funzioni come previsto e riduce la probabilità di errori.

Related posts

Come salvare il pianeta e fare soldi

Come salvare il pianeta e fare soldi

Quante volte vi è capitato di buttare via una bottiglia di plastica, un barattolo di vetro, una lattina di alluminio o una confezione di energia green senza pensarci due volte? Quante volte hai desiderato di poter ottenere qualcosa in cambio del loro riciclaggio? Se sei come la maggior parte delle persone, la risposta è probabilmente molte volte. Il riciclaggio è spesso visto come una seccatura, un lavoro di routine o un dovere che non porta alcun beneficio immediato o tangibile.

L'arte è sempre apolitica?

L'arte è sempre apolitica?

Ieri abbiamo chiuso le porte dell'Eurovision Song Contest di quest'anno con un gran finale scintillante e caotico in cui la cantante svedese Loreen ha portato a casa il trofeo, diventando la prima donna a vincere due volte e riportando la corona alla Svezia 50 anni dopo che gli ABBA hanno vinto la competizione con "Waterloo". Hanno continuato a diventare uno dei più grandi artisti nel canone della musica pop.

Creazione di un ambiente di lavoro sicuro

Creazione di un ambiente di lavoro sicuro

“Mi proteggerà quando sarò in pericolo. mi nasconderà nella sua tenda.

L'apprendimento alla settimana lavorativa conta più di quanto pensi

L'apprendimento alla settimana lavorativa conta più di quanto pensi

Spesso ci troviamo a lottare per implementare ciò che sappiamo essere buono per noi. Dal dire a un altro significativo che li amiamo al ricordare di parlare come un pirata, ci saranno sempre quelli che affermeranno che un giorno, una settimana o un mese di eventi non è necessario perché stanno già facendo quelle cose.