@webeach/react-hooks
v0.2.0
Published
A set of smart React hooks for performant UIs (React 18+)
Maintainers
Readme
💎 Особенности
- Меньше перерисовок. Хуки обновляют состояние только по необходимости: ленивые флаги, стабильные обработчики и ссылки.
- Гибридный возврат. Некоторые хуки можно использовать как кортеж или как объект — выбирайте формат под задачу.
- Аккуратные эффекты. Подписки и очистка ресурсов настроены по умолчанию, поведение предсказуемо.
- Полная совместимость с SSR. Хуки используют браузерные API строго внутри эффектов.
📦 Установка
npm install @webeach/react-hooksили
pnpm install @webeach/react-hooksили
yarn add @webeach/react-hooks📥 Подключение
ES Modules
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';CommonJS
const { useBoolean } = require('@webeach/react-hooks/useBoolean');
const { useEffectCompare } = require('@webeach/react-hooks/useEffectCompare');
const { useWindowEvent } = require('@webeach/react-hooks/useWindowEvent');
// или
const { useBoolean, useEffectCompare, useWindowEvent } = require('@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
- useLayoutEffectСompare
- useLiveRef
- useLocalStorage
- useLoop
- useMap
- useMediaQuery
- useMemoCompare
- useNumber
- useOutsideEvent
- usePageTitle
- usePageVisibility
- usePatchDeepState
- usePatchState
- useRefEffect
- useRefState
- useResizeObserver
- useSessionStorage
- useSet
- useStatus
- useThrottleCallback
- useThrottleState
- useTimeout
- useTimeoutExtended
- useToggle
- useUnmount
По категориям
Состояние — простые примитивы
Состояние — объектные паттерны
Состояние — коллекции
Состояние — хранилища (персистентность)
Таймеры, циклы и кадры
Ограничение частоты (throttle/debounce)
Асинхронные операции
Оптимизация зависимостей
- useDeps
- useCallbackCompare
- useEffectCompare
- useLayoutEffectCompare
- useMemoCompare
- useIsomorphicLayoutEffect
Жизненный цикл
Рефы
События
Наблюдатели (Observers)
Страница/документ
Служебные
🧩 Зависимости
Библиотека имеет единственную внешнюю зависимость — @webeach/collection.
- Эта зависимость используется только хуком
useCollection. - Прочие хуки не импортируют и не требуют
collection.
🔖 Выпуск новой версии
Релизы обрабатываются автоматически с помощью semantic-release.
Перед публикацией новой версии убедись, что:
- Все изменения закоммичены и запушены в ветку
main. - Сообщения коммитов соответствуют формату Conventional Commits:
feat: ...— для новых фичfix: ...— для исправлений баговchore: ...,refactor: ...и другие типы — по необходимости
- Версионирование определяется автоматически на основе типа коммитов (
patch,minor,major).
👨💻 Автор
Разработка и поддержка: Руслан Мартынов
Если у тебя есть предложения или найден баг, открывай issue или отправляй pull request.
📄 Лицензия
Этот пакет распространяется под лицензией MIT.
