Комментарии 2
У нас ещё есть "безусловный" аналог useCallback
import {useCallback, useInsertionEffect, useRef} from 'react';
export function useEvent<T extends (...args: never[]) => unknown>(func: T): T {
const refCallee = useRef(func);
useInsertionEffect(() => {
refCallee.current = func;
});
return useCallback((...args: never[]) => refCallee.current(...args), []) as T;
}
Подходит для всех кейсов, кроме вызова на этапе рендера или в useInsertionEffect в каком-нибудь чилде. Любые колбэки, обработчики событий, (layout)эффекты и т.д.
Тема разобрана здесь
Просто скажу, что работал на больших проектах, где оборачивали все вообще, и не оборачивали почти ничего. Вы разницы не увидите, если, как сказано выше, у вас проект просто кликнуть и что то вычислить. Реакт сам прекрасно знает что нужно перерисовать, а что нет. А то, что функция лишний раз вызовется, ничего страшного.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Мемоизация в React: я почитал документацию вместо вас