TGViewer
Frontend Советы Frontend Советы @frontend_sovet · 2.03K subscribers
Post #419 853
⚛️ Как я перестал бояться useEffect и упростил код

Сегодня разберём проблему, которую я постоянно вижу в React-проектах - перегруженный useEffect.


Типичная картина:


useEffect(() => {
fetchData();
logEvent();
updateTitle();
}, [user, token, locale, theme]);


❌ Что здесь не так:

🔘эффект делает слишком много
🔘зависимости растут как снежный ком
🔘любое изменение ломает логику
🔘сложно тестировать и дебажить


✅ Что я начал делать вместо этого

1. Один useEffect - одна причина


useEffect(() => {
fetchData(user, token);
}, [user, token]);



useEffect(() => {
updateTitle(locale);
}, [locale]);



2. Логику выношу в кастомные хуки


useUserData(user, token);
usePageTitle(locale);


Компонент сразу становится читабельным:


function Profile() {
useUserData(user, token);
usePageTitle(locale);

return <UI />;
}



3. Не боюсь useCallback и useMemo, но использую осознанно

Не для «оптимизации ради оптимизации», а чтобы:

🔘стабилизировать зависимости
🔘убрать лишние перерендеры
🔘сделать поведение предсказуемым

👉@frontend_sovet
  • 👍 2
More from @frontend_sovet
  1. Jun 14, 2026Совет по CSS 💡 Знаете ли вы о свойстве shape-outside в CSS? Demo https://www.codewithshri…
  2. Apr 18, 2026🚀 Подборка полезных IT каналов в Max Системное администрирование, DevOps 📌 https://max.r…
  3. Apr 18, 2026⚛️ Прощай, e.preventDefault(): Нативные формы в React Управление формами в React всегда тр…
  4. Mar 21, 2026🚀 Подборка полезных IT каналов в Max Системное администрирование, DevOps 📌 https://max.r…
  5. Mar 19, 2026CSS совет 💡 Проявите креативность с текстом всего с 3 строками CSS-кода ✨ 👉@frontend_sov…
  6. Dec 16, 2025🎨 CSS Tip: Как скрыть контент визуально, но оставить его доступным В погоне за минималист…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →