Загружаем изображение…
🎯 Оптимизация ререндеров в React через мемоизацию функций
Многие знают про React.memo, но часто забывают про useCallback — и получают лишние ререндеры, особенно в списках и сложных компонентах.
📌 Проблема:
const handleClick = () => {
console.log('Clicked');
};
<MyButton onClick={handleClick} />
Такой handleClick создаётся заново при каждом рендере. Если MyButton мемоизирован (React.memo), это сломает оптимизацию — пропсы-то изменились!
✅ Решение:
const handleClick = useCallback(() => {
console.log('Clicked');
}, []);📈 Профит: Функция сохраняется между рендерами, MyButton не ререндерится без причины.
🧠 Особенно важно для:
* Компонентов в списках (map)
* Контейнеров с большим числом коллбеков
* Производительных UI (таблицы, дашборды, графики)
💡 Используйте eslint-плагин react-hooks/exhaustive-deps — он не даст забыть зависимости.
✍️ @React_lib