El hook useCallback
es un hook que nos permite memorizar una función. Esto quiere decir que si la función que le pasamos como parámetro no ha cambiado, no se ejecuta de nuevo y se devuelve la función que ya se había calculado.
import { useCallback } from 'react'
function Counter({ count, onIncrement }) {
const handleIncrement = useCallback(() => {
onIncrement(count)
}, [count, onIncrement])
return (
<div>
<p>Contador: {count}</p>
<button onClick={handleIncrement}>Incrementar</button>
</div>
)
}
En este caso, el componente Counter
recibe una prop count
que es un número y una prop onIncrement
que es una función que se ejecuta cuando se pulsa el botón.
El hook useCallback
recibe dos parámetros: una función y un array de dependencias. La función se ejecuta cuando el componente se renderiza por primera vez y cuando alguna de las dependencias cambia, en este ejemplo la prop count
o la prop onIncrement
.
La ventaja es que si la prop count
o la prop onIncrement
no cambian, se evita la creación de una nueva función y se devuelve la función que ya se había calculado previamente.