tgoop.com/prog_way_blog/245
Create:
Last Update:
Last Update:
Зачем нужен useCallback
Очень распространенная ошибка, которая говорит о том, что мало кто понимает что такое useCallback
и зачем он нужен.
Важный вопрос, будет ли ререндерится Component
при ререндере родителя?
const Parent = () => {
const foo = useCallback(() => {
}, [])
return <Component foo={foo} />
}
const Component = (props) => { ... }
И ответ тут очевиден —
useCallback
, мы всё равно перерендерим Component
, поскольку рендерится родитель. Чтобы получить ожидаемое поведение, необходимо сделать очень важную вещь, а именно — мемоизировать и сам дочерний компонент:
const Component = memo((props) => { ... })
Вот только так и только тогда мы перестанем ререндерить дочерние компоненты, так как пропсы не изменились. При ревью я заметил много случаев, когда useCallback использовать просто не нужно было, но он был.
А ещё много таких было кейсов:
const Component = () => {
const foo = useCallback(() => {
}, [])
return <button onClick={() => foo()} />
}
Тут смысл
useCallback
теряется вдвойне, так как в пропсах мы всё равно пересоздаём функцию на каждый рендер вот тут: onClick={() => foo()}
Пример из доки реакта
@prog_way_blog — #react #review
BY progway — программирование, IT
Share with your friend now:
tgoop.com/prog_way_blog/245