@webeach/react-hooks
v0.3.1
Published
A set of smart React hooks for performant UIs
Maintainers
Readme
💎 Особенности
- Меньше перерисовок. Хуки обновляют состояние только по необходимости: ленивые флаги, стабильные обработчики и ссылки.
- Гибридный возврат. Некоторые хуки можно использовать как кортеж или как объект — выбирайте формат под задачу.
- Аккуратные эффекты. Подписки и очистка ресурсов настроены по умолчанию, поведение предсказуемо.
- Полная совместимость с SSR. Хуки используют браузерные API строго внутри эффектов.
📦 Установка
npm install @webeach/react-hookspnpm install @webeach/react-hooksyarn add @webeach/react-hooks📥 Подключение
import { useBoolean } from '@webeach/react-hooks/useBoolean';
import { useEffectCompare } from '@webeach/react-hooks/useEffectCompare';
import { useWindowEvent } from '@webeach/react-hooks/useWindowEvent';
// или
import {
useBoolean,
useEffectCompare,
useWindowEvent,
} from '@webeach/react-hooks';🌿 Tree‑shaking
- Каждый хук доступен как отдельный модуль по пути (
@webeach/react-hooks/useX). Такой импорт подтягивает только нужный код — это самый предсказуемый и компактный вариант для любых бандлеров (ESM и CJS). - Именованный импорт из корня (
@webeach/react-hooks) поддерживает tree‑shaking в сборщиках, которые оптимизируют ES‑модули (Vite/Rollup/esbuild/Webpack 5 в production). Неиспользуемые экспорты будут удалены на этапе сборки. - Для проектов на CommonJS рекомендуем точечные импорты по пути модуля (
require('@webeach/react-hooks/useX')), чтобы не тянуть лишние файлы через индекс.
🛠 Список хуков
По алфавиту
useAsyncCallback, useAsyncHandler, useBoolean, useCallbackCompare, useCollection, useControlled, useDebounceCallback, useDebounceState, useDemandStructure, useDeps, useDOMEvent, useEffectCompare, useForceUpdate, useFrame, useFrameExtended, useImageLoader, useIntersectionObserver, useIsomorphicLayoutEffect, useLayoutEffectCompare, useLiveRef, useLocalStorage, useLoop, useMap, useMediaQuery, useMemoCompare, useNumber, useOutsideEvent, usePageTitle, usePageVisibility, usePatchDeepState, usePatchState, useRefEffect, useRefState, useResizeObserver, useSessionStorage, useSet, useStatus, useThrottleCallback, useThrottleState, useTimeout, useTimeoutExtended, useToggle, useUnmount, useViewportBreakpoint, useWindowEvent
По категориям
Состояние — простые примитивы
useControlled, useBoolean, useNumber, useToggle, useStatus
Состояние — объектные паттерны
usePatchDeepState, usePatchState
Состояние — коллекции
Состояние — хранилища (персистентность)
useLocalStorage, useSessionStorage
Таймеры, циклы и кадры
useFrame, useFrameExtended, useLoop, useTimeout, useTimeoutExtended
Ограничение частоты (throttle/debounce)
useDebounceCallback, useDebounceState, useThrottleCallback, useThrottleState
Асинхронные операции
useAsyncCallback, useAsyncHandler, useImageLoader
Оптимизация зависимостей
useDeps, useCallbackCompare, useEffectCompare, useLayoutEffectCompare, useMemoCompare, useIsomorphicLayoutEffect
Жизненный цикл
useEffectCompare, useLayoutEffectCompare, useUnmount
Рефы
События
useDOMEvent, useWindowEvent, useOutsideEvent
Наблюдатели (Observers)
useIntersectionObserver, useResizeObserver
Страница/документ
useMediaQuery, usePageTitle, usePageVisibility, useViewportBreakpoint
Служебные
useDemandStructure, useForceUpdate, useRefState
🧩 Зависимости
Библиотека имеет единственную внешнюю зависимость — @webeach/collection.
- Эта зависимость используется только хуком
useCollection. - Прочие хуки не импортируют и не требуют
collection.
🔖 Выпуск новой версии
Релизы обрабатываются автоматически с помощью semantic-release.
Перед публикацией новой версии убедись, что:
- Все изменения закоммичены и запушены в ветку
main. - Сообщения коммитов соответствуют формату Conventional Commits:
feat: ...— для новых фичfix: ...— для исправлений баговchore: ...,refactor: ...и другие типы — по необходимости
- Версионирование определяется автоматически на основе типа коммитов (
patch,minor,major).
👨💻 Автор
Разработка и поддержка: Руслан Мартынов
Если у тебя есть предложения или найден баг, открывай issue или отправляй pull request.
📄 Лицензия
Этот пакет распространяется под лицензией MIT.
