No estoy realmente seguro de cuándo debemos evitar usar useCallback, si hay algún daño (reasignación de memoria). Por ejemplo, digamos que tengo un componente con dos accesorios, {onSave, onClose} y un sate viewName. ¿La función del controlador de abajo se optimizará con estas dependencias?
const handleSaveView = useCallback(() => { onSaveView(viewName, selectedViewList); onClose(); }, [onSaveView, onClose, viewName]);useCallback guarda una función que le pasa y, en el futuro, devuelve esa función en lugar de la nueva si cambia alguno de los valores en la matriz de dependencia.
Esto tiene un costo, principalmente en las pruebas de la matriz de dependencias y, la mayoría de las veces, no vale la pena usarlo. Es una herramienta muy tentadora para la optimización prematura .
Hay momentos en los que vale la pena pagar ese costo, como cuando la función tiene un estado interno o es una dependencia de otro gancho (por lo que volver a crear la función activaría que el otro gancho se vuelva a ejecutar).
"Tu guía para React.useCallback()" de Dmitri Pavlutin cubre esto con más profundidad.