Прокси-компонент для управления доступом
Паттерн Компонент-прокси можно применить для более сложных задач, чем управление загрузкой. Его используют для инкапсуляции и разграничения прав доступа к отдельным частям интерфейса.
Прокси-компонент для контроля доступа оборачивает защищенный контент. Он обращается к
👉 @sWebDev
Паттерн Компонент-прокси можно применить для более сложных задач, чем управление загрузкой. Его используют для инкапсуляции и разграничения прав доступа к отдельным частям интерфейса.
Прокси-компонент для контроля доступа оборачивает защищенный контент. Он обращается к
AuthContext
, чтобы получить роль текущего пользователя, и сравнивает её с требуемой ролью, переданной в props
. В зависимости от результата проверки, прокси либо отрисовывает дочерние элементы, либо возвращает null
или компонент-заглушку.import { useContext, ReactNode } from 'react';
import { AuthContext } from './AuthContext'; // контекст создан
interface AccessControlProxyProps {
children: ReactNode;
requiredRole: 'admin' | 'user';
}
function AccessControlProxy({ children, requiredRole }: AccessControlProxyProps) {
const { user } = useContext(AuthContext);
if (user?.role !== requiredRole) {
return null; // или <AccessDenied />
}
return <>{children}</>;
}
👉 @sWebDev
👍3❤1
Dragscroll
Прокрутка контента с помощью мыши часто ограничена использованием стандартных скроллбаров. Библиотека dragscroll добавляет в обычные десктопные интерфейсы интуитивное поведение скроллинга перетаскиванием, привычное по сенсорным устройствам. Инструмент будет полезен для галерей, карт или любых контейнеров с горизонтальной прокруткой.
👉 @sWebDev
Прокрутка контента с помощью мыши часто ограничена использованием стандартных скроллбаров. Библиотека dragscroll добавляет в обычные десктопные интерфейсы интуитивное поведение скроллинга перетаскиванием, привычное по сенсорным устройствам. Инструмент будет полезен для галерей, карт или любых контейнеров с горизонтальной прокруткой.
👉 @sWebDev
👍2
Профессиональная обработка ошибок в TypeScript
Обработка ошибок через
👉 @sWebDev
Обработка ошибок через
try...catch
часто приводит к запутанному коду и потере типизации при работе с any
или unknown
. Статья предлагает структурированный подход к созданию надёжной системы обработки ошибок в TypeScript. Разбираются паттерны, которые помогают сохранить типобезопасность и сделать код более предсказуемым и поддерживаемым.👉 @sWebDev
👍2❤1
Vidbg.js
Библиотека Vidbg.js предназначена для создания полноэкранных видеофонов. Инструмент решает проблемы с адаптивным масштабированием и содержит механизм fallback-изображений для мобильных устройств, где автовоспроизведение видео часто ограничено.
👉 @sWebDev
Библиотека Vidbg.js предназначена для создания полноэкранных видеофонов. Инструмент решает проблемы с адаптивным масштабированием и содержит механизм fallback-изображений для мобильных устройств, где автовоспроизведение видео часто ограничено.
👉 @sWebDev
❤2
Контекст выполнения
Какое ключевое условие необходимо для корректной работы оператора
Забыли? Вернитесь к посту от04.08.2025 .
👉 @sWebDev
Какое ключевое условие необходимо для корректной работы оператора
takeUntilDestroyed
?Забыли? Вернитесь к посту от
👉 @sWebDev
❤2
Какое ключевое условие необходимо для корректной работы оператора takeUntilDestroyed?
Anonymous Quiz
14%
Применение оператора внутри метода ngOnInit.
53%
Обязательная реализация интерфейса OnDestroy в компоненте.
25%
Вызов оператора внутри инъекционного контекста.
8%
Использование его только для HTTP-запросов.
👍2❤1
Обработка внешних кликов
Хук
👉 @sWebDev
Хук
useOnClickOutside
вызывает колбэк при клике вне группы отслеживаемых элементов, указанных в массиве refs. Для надежности используется событие mousedown
, а не click
. mousedown
срабатывает до возможного удаления элемента из DOM, предотвращая баги, когда цель клика исчезает до проверки.import { useEffect } from 'react';
function useOnClickOutside(refs, handler) {
useEffect(() => {
const listener = (event) => {
if (refs.every(ref => !ref.current?.contains(event.target))) {
handler(event);
}
};
document.addEventListener('mousedown', listener);
return () => document.removeEventListener('mousedown', listener);
}, [refs, handler]);
}
👉 @sWebDev
❤3👍2
Kefir.js
Управлять асинхронными событиями вроде кликов, ответов сервера и таймеров часто означает утонуть в колбэках. Kefir.js предлагает работать с ними в реактивном стиле, представляя всё как потоки данных. Библиотека содержит мощные инструменты для фильтрации, объединения и трансформации этих потоков, что превращает хаос в предсказуемую, декларативную логику.
👉 @sWebDev
Управлять асинхронными событиями вроде кликов, ответов сервера и таймеров часто означает утонуть в колбэках. Kefir.js предлагает работать с ними в реактивном стиле, представляя всё как потоки данных. Библиотека содержит мощные инструменты для фильтрации, объединения и трансформации этих потоков, что превращает хаос в предсказуемую, декларативную логику.
👉 @sWebDev
👍2👎1
Media is too big
VIEW IN TELEGRAM
Cinematic glitch slideshow
Слайдшоу с кинематографическим глитч-эффектом на Three.js и GSAP.
👉 @sWebDev
Слайдшоу с кинематографическим глитч-эффектом на Three.js и GSAP.
👉 @sWebDev
👍2
Зачем нужен паттерн Render Props в React
Когда нужно переиспользовать логику компонента, но с разным отображением, на помощь приходит паттерн Render Props. Статья наглядно объясняет, как передача функции через
👉 @sWebDev
Когда нужно переиспользовать логику компонента, но с разным отображением, на помощь приходит паттерн Render Props. Статья наглядно объясняет, как передача функции через
props
помогает отделить поведение от представления, делая компоненты более гибкими. В материале разбираются практические примеры и проводится сравнение с кастомными хуками, чтобы вы могли выбрать правильный инструмент для своей задачи.👉 @sWebDev
❤2
Slip.js
Библиотека Slip.js добавляет в HTML-списки интерактивное управление жестами, привычное по мобильным приложениям. Она реализует сортировку элементов перетаскиванием и свайпы для удаления, инкапсулируя всю логику обработки событий касания. Инструмент работает без внешних зависимостей.
👉 @sWebDev
Библиотека Slip.js добавляет в HTML-списки интерактивное управление жестами, привычное по мобильным приложениям. Она реализует сортировку элементов перетаскиванием и свайпы для удаления, инкапсулируя всю логику обработки событий касания. Инструмент работает без внешних зависимостей.
👉 @sWebDev
❤2👍1
Логика предиката
Какую роль выполняет функция-предикат в хуке, который условно сохраняет предыдущее значение состояния?
Забыли? Вернитесь к посту от11.08.2025 .
👉 @sWebDev
Какую роль выполняет функция-предикат в хуке, который условно сохраняет предыдущее значение состояния?
Забыли? Вернитесь к посту от
👉 @sWebDev
❤2
Какую роль выполняет функция-предикат в хуке, который условно сохраняет предыдущее значение состояния?
Anonymous Quiz
48%
Определяет, нужно ли обновлять сохраненное предыдущее значение.
10%
Форматирует сохраненное значение перед выводом.
13%
Запускает асинхронную операцию при изменении значения.
30%
Сравнивает текущее значение с начальным состоянием.
👍2❤1