Когда пользователь вводит текст в поиск или изменяет размер окна — запросы летят десятками. Debounce откладывает выполнение функции до тех пор, пока события не прекратятся.
const debounce = (fn, ms) => {
let timer;
return (...args) => {
clearTimeout(timer);
timer = setTimeout(() => fn(...args), ms);
};
};
// Использование
const handleSearch = debounce((value) => {
console.log('Поиск:', value);
}, 300);
// В React
<input onChange={(e) => handleSearch(e.target.value)} />
— Автокомплит и live-поиск
— Обработка resize/scroll событий
— Валидация форм при вводе
— Любые частые события
При каждом новом вызове старый таймер сбрасывается и создаётся новый. Функция выполнится только когда пройдёт 300ms без новых событий.
🔹 Курс «Алгоритмы и структуры данных»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
#readme #js #react
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10❤3🥰3
Когда фича крупная или экспериментальная, лучше не рисковать основной рабочей веткой. Проще создать временную песочницу, где можно тестировать всё, что угодно — без страха что-то сломать.
1. Создать временную ветку:
git switch -c sandbox
2. Перенести только нужные коммиты из своей фичи:
git cherry-pick <hash>
Можно брать по одному, можно — диапазоном.
3. Протестировать изменения в изоляции.
Никаких конфликтов, никакой порчи основной ветки.
4. Удалить песочницу, когда всё готово:
git branch -D sandbox
Используйте песочницы, если фича явно рискованная или слишком большая — это экономит время и нервы.
— Скидка 40% на все курсы Академии
— Розыгрыш Apple MacBook
— Бесплатный тест на знание математики
#readme #git
Please open Telegram to view this post
VIEW IN TELEGRAM
🥰4❤3👏2
react-hooks-cheatsheet.pdf
102.1 KB
Хуки сделали React-компоненты проще и мощнее. Эта шпаргалка — ваш быстрый справочник по всем основным хукам с примерами кода.
Что внутри:
Разбор каждого хука по принципу «что делает → как работает → когда использовать».
— Скидка 40% на все курсы Академии
— Розыгрыш Apple MacBook
— Бесплатный тест на знание математики
#readme #react
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9🤩2
SpoilerJS — веб-компонент для создания эффекта спойлера с анимацией частиц, вдохновлённый Telegram.
— Работает с любым фреймворком
— Открытый исходный код (MIT License)
— Простая интеграция
Правда, анимация не такая плавная, как в оригинале Telegram, но для веба — вполне достойная реализация.
🔹 Курс «Алгоритмы и структуры данных»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
#readme #js
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9🌚1
react-router-v7-cheatsheet.pdf
48.9 KB
React Router v7 объединил v6 и Remix в одну библиотеку. Два режима на выбор: легковесный Library Mode для SPA или полноценный Framework Mode с SSR.
Требования: Node.js 20+ и React 18+
#readme #react
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5🥰2👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Вращение, появление, пульсация и bounce — четыре примера, которые пригодятся в любом проекте.
Каждый эффект — это
@keyframes и несколько строк CSS. Копируйте и адаптируйте под свои задачи.🔹 Курс «Алгоритмы и структуры данных»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
#readme #css
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥2🥰2
Большинство разработчиков знают только git add . и git reset, но есть команда, которая позволяет работать чище и безопаснее — git restore --staged.
Она снимает изменения только из индекса (staged), не трогая рабочую директорию. То есть код остаётся в файлах, но не попадёт в коммит.
Когда это используют:
Добавили лишние файлы?
Вернуть индекс в чистое состояние проще простого:
git restore --staged .
Когда в PR важно отделить:
– правки логики
– форматирование
– обновления зависимостей
– рефакторинг
Если что-то случайно попало — легко убрать из staged:
git restore --staged src/utils/helpers.js
Интерактивно добавляли куски кода и выбрали не тот?
Команда помогает быстро исправить ошибку — без потери изменений в файле.
Нужно собрать идеальный коммит.
Важно иметь чистый staged — restore отлично помогает контролировать этот процесс.
🔹 Курс «Алгоритмы и структуры данных»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
#readme #git
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🥰3❤🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Восемь способов выбрать нужный элемент без лишних классов. От базовых :first-child и :last-child до продвинутых формул с :nth-child(3n+1). Один селектор вместо десятка классов.
#readme #css
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6🥰3🔥1
Примеры кода для создания интерактивной доски задач в стиле Trello.
— HTML-разметка колонок и карточек задач
— CSS-стилизация с кастомными цветовыми тегами
— Drag & Drop через библиотеку SortableJS
— Профили задач с аватарами и датами
Готовый код для изучения и использования в проектах.
🔹 Курс «Алгоритмы и структуры данных»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
#readme #css #html #js
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5🥰2👏2
Scrum_Guide.pdf
398.8 KB
Гайд от Кена Швабера и Джеффа Сазерленда — 17 страниц, которые задают единственный корректный способ понимать Scrum.
#readme #scrum
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
В Chrome Canary 145 появились свойства, которые позволяют нативно растягивать или ужимать текст под ширину блока — без JS.
h1 {
text-grow: per-line scale;
}
• text-grow — растягивает короткие строки
• text-shrink — ужимает длинные
scale, scale-inline, font-size, letter-spacing
По сути, это нативный FitText.js, только одной строкой CSS.
#release_digest #readme #css
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥3🥰1
Когда копируете объект через {...obj}, вложенные структуры остаются по ссылке. Меняете копию → меняется оригинал.
Ограниченный, но быстрый для простых структур
const clone = (obj) => JSON.parse(JSON.stringify(obj));
Современный универсальный API (Chrome 98+, Firefox 94+, Node 17+, Safari 15+)
const clone = (obj) => structuredClone(obj);
const addItem = (newItem) => {
const clonedState = structuredClone(state);
clonedState.items.push(newItem);
setState(clonedState);
};
⚠️ Глубокое копирование — дорогая операция. В React его используют точечно, а не для всего состояния. В крупных приложениях лучше использовать immer или нормализованные структуры данных.
— Копирование вложенных объектов и графов
— Redux / Zustand, когда нельзя мутировать state
— Снимки данных перед трансформациями
— Копирование конфигураций, где нет функций и методов
🔹 Курс «Алгоритмы и структуры данных»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
#readme #js #react
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍2🥰2