Frontend Разработка | JavaScript & Верстка сайтов. HTML, CSS и React. Уроки для Фронтенд Developer. JS, Vue и Web технологии. IT Карьера, Курсы и Coding.
Frontend Разработка | JavaScript & Верстка сайтов. HTML, CSS и React. Уроки для Фронтенд Developer. JS, Vue и Web технологии. IT Карьера, Курсы и Coding.
1 495 подписчиков · @frontend_1
К каналу →
Советы по HTML 💡 Знаете ли вы, что с помощью элемента HTML <dialog> можно легко создать модал? 👉 @frontend_1
Читать далее →
2 894
any - это ложь, которую вы говорите сами себе Давайте честно: когда у вас горят дедлайны, а TypeScript ругается на несовпадение типов, рука сама тянется написать : any. «Я потом …
Читать далее →
2 911

🛑 Хватит проверять isMounted в useEffect Вы наверняка видели (или писали) такой код, чтобы избежать ошибки "Can't perform a React state update on an u…

🛑 Хватит проверять isMounted в useEffect

Вы наверняка видели (или писали) такой код, чтобы избежать ошибки "Can't perform a React state update on an unmounted component":

// ❌ Антипаттерн
useEffect(() => {
let isMounted = true;
fetchData().then(data => {
if (isMounted) setState(data);
});
return () => { isMounted = false; };
}, []);

Это «мусорный» код. Запрос все равно происходит, трафик тратится, промис висит в памяти.
Вместо ручных флагов используйте стандартный браузерный API - AbortController.

✅ Как сделать правильно:

useEffect(() => {
const controller = new AbortController();

fetch('/api/data', { signal: controller.signal })
.then(res => res.json())
.then(setData)
.catch(err => {
// Важно: не считаем отмену запроса ошибкой
if (err.name !== 'AbortError') {
console.error(err);
}
});

// При размонтировании или перезапуске эффекта запрос реально отменится браузером
return () => controller.abort();
}, []);

🚀 Бонус-фича: Очистка Event Listeners
AbortController умеет удалять и слушатели событий. Больше не нужно выносить функцию-хендлер в отдельную переменную, чтобы передать её в removeEventListener.

const controller = new AbortController();

// Передаем signal в опции
window.addEventListener('resize', (e) => handleResize(e), {
signal: controller.signal
});

// Одним вызовом удаляем слушатель (или группу слушателей с одним сигналом)
controller.abort();

👉 @frontend_1
🏗 Забудьте про z-index: 9999: Нативный <dialog> Мы годами писали сложные велосипеды для модальных окон или тянули тяжелые библиотеки. Главная боль кастомных решений - это accessib…
Читать далее →
2 849
📦 Нативная группировка: Object.groupBy Сколько раз в жизни вы писали reduce для группировки массива объектов по какому-то полю? Или тянули для этого жирный lodash? Задача: Сгрупп…
Читать далее →
2 829
Другие главы канала «Frontend Разработка | JavaScript & Верстка сайтов. HTML, CSS и React. Уроки для Фронтенд Developer. JS, Vue и Web технологии. IT Карьера, Курсы и Coding.»
Выберите главу, чтобы продолжить чтение
Все посты →
Глава от 27.05.2026
Slice vs. Splice в JavaScript 👉 @frontend_1
👁 395 просмотров
Глава от 27.05.2026
Используйте сокращение CSS flex flow, чтобы объединить свойства flex direction и…
👁 463 просмотров
Глава от 26.05.2026
В России можно посещать IT-мероприятия хоть каждый день: как оффлайн, так и онла…
👁 392 просмотров
Глава от 25.05.2026
CSS Grid 👉 @frontend_1
👁 417 просмотров
Глава от 25.05.2026
Работа аналитика - уже не только про цифры! Это про умение принимать решения бы…
👁 406 просмотров
Глава от 25.05.2026
Пример кастомных курсоров на CSS 🧑‍💻🚀 👉 @frontend_1
👁 476 просмотров
Глава от 24.05.2026
🚀 Подборка полезных IT каналов в Max Системное администрирование, DevOps 📌 ht…
👁 485 просмотров
Глава от 23.05.2026
💡HTML-элемент <meter> в действии 👉 @frontend_1
👁 561 просмотров
Глава от 23.05.2026
Работа аналитика - уже не только про цифры! Это про умение принимать решения бы…
👁 588 просмотров

Популярные посты канала «Frontend Разработка | JavaScript & Верстка сайтов. HTML, CSS и React. Уроки для Фронтенд Developer. JS, Vue и Web технологии. IT Карьера, Курсы и Coding.»

🛡 TypeScript: Почему satisfies круче обычного объявления типа? Многие по привычке пишут так: const config: Config = { ... }. Это работает д…
👁 2 925 просмотров
🎨 CSS :has() - это легальный чит-код в верстке Мы привыкли называть :has() «селектором родителя», но это определение сильно преуменьшает ег…
👁 2 924 просмотров
any - это ложь, которую вы говорите сами себе Давайте честно: когда у вас горят дедлайны, а TypeScript ругается на несовпадение типов, рука…
👁 2 911 просмотров
Советы по HTML 💡 Знаете ли вы, что с помощью элемента HTML <dialog> можно легко создать модал? 👉 @frontend_1
👁 2 894 просмотров
Перестаньте пихать всё в useEffect. Серьезно. Вижу это на каждом код-ревью. Джуны (и иногда уставшие мидлы) используют useEffect для синхро…
👁 2 894 просмотров
Идеальные заголовки без JS: text-wrap: balance Дизайнеры ненавидят «висячие» слова. Когда длинный заголовок переносится так, что на второй …
👁 2 880 просмотров
Знаете ли вы, что можно изменить метод формы в HTML-форме, указав атрибут formMethod на кнопке? 👉 @frontend_1
👁 2 874 просмотров
Советы по Javascript 💡 👉 @frontend_1
👁 2 873 просмотров
🚀 Подборка полезных IT каналов в Max Системное администрирование, DevOps 📌 https://max.ru/i_odmin Все для системного администратора https…
👁 2 855 просмотров
🏗 Забудьте про z-index: 9999: Нативный <dialog> Мы годами писали сложные велосипеды для модальных окон или тянули тяжелые библиотеки. Главн…
👁 2 849 просмотров
🚀 Подборка полезных IT каналов в Max Системное администрирование, DevOps 📌 https://max.ru/i_odmin Все для системного администратора https…
👁 2 838 просмотров
📐 Перестаньте верстать под экран: @container Мы привыкли делать адаптив через @media, опираясь на размер экрана. Но это ломает компонентный…
👁 2 838 просмотров
📦 Нативная группировка: Object.groupBy Сколько раз в жизни вы писали reduce для группировки массива объектов по какому-то полю? Или тянули …
👁 2 829 просмотров
Используйте свойство columns, чтобы разделить статью на отзывчивые колонки 🚀. 👉 @frontend_1
👁 2 825 просмотров
🤝 Promise.withResolvers() - конец старого костыля Если вы работали со сложными асинхронными потоками, вам наверняка приходилось «вытаскиват…
👁 2 809 просмотров
🚫 Перестаньте использовать pointer-events: none для блокировки UI Когда вы открываете Side-menu (шторку), показываете лоадер или переключае…
👁 2 809 просмотров
Почему z-index: 9999 не работает (и как перестать страдать) Знакомая ситуация? У вас есть модалка, которая почему-то перекрывается хедером.…
👁 2 791 просмотров
🗣 Хватит склеивать массивы через .join(', ') Каждый фронтендер хотя бы раз писал функцию, которая превращает массив ['A', 'B', 'C'] в строк…
👁 2 787 просмотров
Cовет💡 Быстрый и простой совет для вложенных радиусов: ваши углы будут выглядеть намного лучше, если вы установите внешний радиус на сумму …
👁 2 778 просмотров
Node получил возможность запускать файлы TypeScript напрямую! 👉 @frontend_1
👁 2 774 просмотров

Связанные темы в других каналах

Каналы из той же тематики, где часто появляются близкие сюжеты
Вся тема →
@matematik_andrei_channel
Математик Андрей
Основатель онлайн-школы «Точка Знаний» В канале: — короткие видео по темам 1-11 классов — разбор задач ВПР/ОГЭ/ЕГЭ — применение математики в жизни Получить консульта…
👥 233 531 · -299/7д
@obr_mo
Образование Подмосковья
Новости об образовании в Московской области
👥 80 933 · +4 408/7д
@Moscow_school
Московское образование
Успех начинается здесь! Приложение «ЗОЖ с МЭШиком» https://max.ru/meshik_app_bot Для СМИ: press-donm@mos.ru Сайт: mosobr.shkolamoskva.ru ВК: vk.com/educationdep ТГ: htt…
👥 68 196 · +36/7д
@minprosrf
Минпросвещения России
Официальный канал Министерства просвещения России. Всё об образовании для родителей, педагогов и учащихся. Сайт edu.gov.ru ВКонтакте vk.com/minprosvet Однокл
👥 54 160 · +442/7д
@Lingvaa
Лингвист | Русский язык Образование
Канал №1 для тех, кто звонИт, а не звОнит! По рекламе: https://clck.ru/3R7DoR Биржа: https://telega.in/c/Lingvaa
👥 53 567 · -114/7д
@iqkot
Образование
Образовательное сообщество, где знания становятся доступными каждому. Мы собираем и структурируем материалы по саморазвитию, обучению и смежным темам. Здесь вы найдете ле…
👥 48 386 · -4 040/7д
🏷 Темы и теги
#frontend #javascript #react #vue #html5 #css3 #Образование
📋 О канале Frontend Разработка | JavaScript & Верстка сайтов. HTML, CSS и React. Уроки для Фронтенд Developer. JS, Vue и Web технологии. IT Карьера, Курсы и Coding.
Твой путь в веб-разработку. Основы: HTML5, CSS3, Flexbox, Grid. Адаптивная верстка (Responsive) и макеты из Figma. Глубокий JavaScript (ES6+), DOM и события. Фреймворки: React, Vue.js, Angular. Препроцессоры SCSS и стилизация Tailwind. Работа с Git и GitHub. Как пройти собеседование на Junior Frontend Developer. Задачи, тесты и создание портфолио с нуля.
🔍 Архив всех постов Макс
Поиск по 7,254,257 постам из 199,571 каналов
Попробовать за 1 ₽ →
Удалить пост или канал с МАКСОТЕКИ
Заявка подтверждается через бота Макс: нужно быть администратором канала и добавить бота МАКСОТЕКИ в администраторы. После проверки канал или конкретный пост скрывается с сайта.
📊 Аналитика канала «Frontend Разработка | JavaScript & Верстка сайтов. HTML, CSS и React. Уроки для Фронтенд Developer. JS, Vue и Web технологии. IT Карьера, Курсы и Coding.» ➡️ Перейти в канал Макс
Заявка в МАКСОТЕКА
Добавьте свой канал в каталог
Зарегистрируйтесь в личном кабинете и добавьте канал за пару кликов.
Перейти в личный кабинет →

Бесплатная регистрация, быстрая модерация.