Какие два стандартных хука объединяет в себе useQueryState?
Anonymous Quiz
41%
useState и useEffect.
10%
useContext и useReducer.
43%
useState и useSearchParams.
5%
useMemo и useCallback.
👍4
Декларативное управление подписками
Стандартная отписка от
Пакет
👉 @sWebDev
Стандартная отписка от
Observable
в ngOnDestroy
громоздка и провоцирует утечки памяти.Пакет
@angular/core/rxjs-interop
предлагает более чистое решение. Оператор takeUntilDestroyed
декларативно связывает жизненный цикл подписки с жизненным циклом компонента. Подписка автоматически завершится при уничтожении компонента. Важным условием его работы является вызов в инъекционном контексте, например, в конструкторе компонента.import { Component, inject } from '@angular/core';
import { interval } from 'rxjs';
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
@Component({
selector: 'app-news-feed',
template: '<p>Последнее обновление: {{ time }}</p>',
standalone: true,
})
export class NewsFeedComponent {
time = 0;
constructor() {
interval(1000)
.pipe(takeUntilDestroyed())
.subscribe(value => {
this.time = value;
console.log(`Новое событие: ${value}`);
});
}
}
👉 @sWebDev
👍3❤2
Moveable
Наделить DOM-элементы возможностью свободного перемещения и масштабирования вручную является непростой задачей. Библиотека Moveable инкапсулирует данную сложную логику и содержит готовые инструменты для манипуляции объектами в реальном времени. Этот инструмент отлично подходит для создания интерактивных редакторов, настраиваемых дашбордов или любых приложений с drag-and-drop интерфейсом.
👉 @sWebDev
Наделить DOM-элементы возможностью свободного перемещения и масштабирования вручную является непростой задачей. Библиотека Moveable инкапсулирует данную сложную логику и содержит готовые инструменты для манипуляции объектами в реальном времени. Этот инструмент отлично подходит для создания интерактивных редакторов, настраиваемых дашбордов или любых приложений с drag-and-drop интерфейсом.
👉 @sWebDev
❤2
Как React Fiber улучшает производительность рендеринга
Когда приложение React начинает «тормозить» при больших обновлениях, проблема часто кроется в блокировке основного потока. Статья подробно объясняет, как архитектура React Fiber решает данную проблему. Разбирается, как Fiber позволяет разбивать рендеринг на части и приостанавливать его, чтобы интерфейс оставался отзывчивым. Понимание этого механизма помогает писать более производительный код.
👉 @sWebDev
Когда приложение React начинает «тормозить» при больших обновлениях, проблема часто кроется в блокировке основного потока. Статья подробно объясняет, как архитектура React Fiber решает данную проблему. Разбирается, как Fiber позволяет разбивать рендеринг на части и приостанавливать его, чтобы интерфейс оставался отзывчивым. Понимание этого механизма помогает писать более производительный код.
👉 @sWebDev
❤2
Atropos.js
Интерактивные элементы часто выглядят плоскими и не привлекают внимание. Atropos.js решает эту проблему, создавая трёхмерный параллакс-эффект при наведении курсора. Библиотека помогает добавить глубину карточкам, баннерам и другим блокам, делая интерфейс более живым и запоминающимся.
👉 @sWebDev
Интерактивные элементы часто выглядят плоскими и не привлекают внимание. Atropos.js решает эту проблему, создавая трёхмерный параллакс-эффект при наведении курсора. Библиотека помогает добавить глубину карточкам, баннерам и другим блокам, делая интерфейс более живым и запоминающимся.
👉 @sWebDev
👍5👎2❤1
Определение типа
Что представляет собой тип
Забыли? Вернитесь к посту от21.07.2025 .
👉 @sWebDev
Что представляет собой тип
ReactElement
в контексте React?Забыли? Вернитесь к посту от
👉 @sWebDev
❤1
Что представляет собой тип ReactElement в контексте React?
Anonymous Quiz
58%
Результат вызова React.createElement.
30%
Любой дочерний элемент, включая строки и числа.
9%
Специальный тип для работы с React.Fragment.
3%
Псевдоним для типа string | number.
👍4👎1
Отслеживание значения с условием
Базовый хук
Внутренний
👉 @sWebDev
Базовый хук
usePrevious
можно уточнить, добавив выборочное сохранение. Такой хук принимает вторым аргументом предикат-функцию, которая решает, нужно ли обновлять "предыдущее" значение.Внутренний
ref
хука изменится только при положительном ответе предиката. Это позволяет отслеживать не последнее значение, а последнее, подошедшее под определенное правило.import { useEffect, useRef } from 'react';
function useConditionalPrevious<T>(
value: T,
predicate: (prev: T, current: T) => boolean
) {
const previousRef = useRef<T>();
const currentRef = useRef<T>(value);
useEffect(() => {
if (predicate(currentRef.current, value)) {
previousRef.current = currentRef.current;
}
currentRef.current = value;
}, [value, predicate]);
return previousRef.current;
}
👉 @sWebDev
👍3❤1
Умение правильно гуглить — это 50% успеха в работе программиста. Умение вспомнить, как ты гуглил, — остальные 50%.
👍 — Это хороший повод выработать привычку сразу сохранять в закладки или в базу знаний полезные ссылки.
❤️ — Скоро AI будет искать за нас, и этот навык отомрет, как умение писать на ассемблере.
👉 @sWebDev | #юмор
👍 — Это хороший повод выработать привычку сразу сохранять в закладки или в базу знаний полезные ссылки.
❤️ — Скоро AI будет искать за нас, и этот навык отомрет, как умение писать на ассемблере.
👉 @sWebDev | #юмор
❤3👍2
Swapy
Заставить элементы в списке плавно меняться местами при перетаскивании может быть непросто. Библиотека Swapy создана специально для реализации такого
👉 @sWebDev
Заставить элементы в списке плавно меняться местами при перетаскивании может быть непросто. Библиотека Swapy создана специально для реализации такого
drag-to-swap
поведения и не зависит от фреймворков. Она берёт на себя всю сложную логику обработки событий и анимаций, чтобы вы могли добавить интуитивный обмен элементов в любой список или сетку.👉 @sWebDev
❤2
Создание WYSIWYG-редактора на React и Draft.js
Попытка построить свой редактор на
👉 @sWebDev
Попытка построить свой редактор на
contenteditable
часто заканчивается борьбой с непредсказуемым поведением браузеров. Статья показывает, как фреймворк Draft.js помогает навести порядок в этом хаосе. В ней разбирается структурированный подход к управлению состоянием редактора, обработке стилей и созданию плагинов, который позволяет построить надёжный и расширяемый WYSIWYG-инструмент.👉 @sWebDev
👎3❤2