![CI/CD](https://github.com/beautifulinteractions/beautiful-react-hooks/workflows/CI/CD/badge.svg) [![Coverage Status](https://coveralls.io/repos/github/beautifulinteractions/beautiful-react-hooks/badge.svg?branch=master)](https://coveralls.io/github/beautifulinteractions/beautiful-react-hooks?branch=master)[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) ![npm](https://img.shields.io/npm/v/beautiful-react-hooks) ![GitHub stars](https://img.shields.io/github/stars/beautifulinteractions/beautiful-react-hooks?style=social)

Beautiful React Hooks


Колекція красивих (також надіємось що корисних) Реакт хуків, для прискорення розробки ваших компонентів та хуків.

🌟 Спробуйте їх у дії тут 🌟

![Usage example](../usage_example.png) 🇬🇧 English | 🇨🇳 简体中文 | 🇮🇹 Italiano | 🇪🇸 Español | 🇺🇦 Ukrainian | 🇧🇷 Brazilian Portuguese | 🇵🇱 Polski | 🇯🇵 日本語 ## 💡 Чому? Кастомні Реакт хуки дозволяють абстрагувати бізнес логіку компонентів в окремі функції багаторазового використання.
Досі, ми зауважили, що більшість хуків які ми створили і після цього поширили між нашими внутрішніми проектами, досить часто мають аналогічну суть, що включають в себе виклик колбек функцій, подій та життєвих циклів компонентів.
З цієї причини, ми спробували реалізувати цю суть в `beautiful-react-hooks`: колекцію (*сподіваємось*) корисних Реакт хуків, для того щоб допомогти іншим компаніям та професіоналам пришвидшити їхній процес розробки.

Крім того, ми створили лаконічний, але конкретний API, з точки зору читабельності коду, маючи на меті тримати криву вивчення настільки низькою, наскільки це можливо, тому це може бути використано та поширено у великих командах. **-- Будь-ласка, перед використанням будь-яких хуків, прочитайте їхню документацію! --** ## ☕️ Особливості * Лаконічний API * Малий розмір та легкість * Простий у вивченні

🌟 Спробуйте їх у дії тут 🌟

## 🕺 Встановлення Використовуючи `npm`: ```bash $ npm install beautiful-react-hooks ``` Використовуючи `yarn`: ```bash $ yarn add beautiful-react-hooks ``` ## 🎨 Хуки * [useMutableState](useMutableState.md) * [useInfiniteScroll](useInfiniteScroll.md) * [useObservable](useObservable.md) * [useEvent](useEvent.md) * [useGlobalEvent](useGlobalEvent.md) * [usePreviousValue](usePreviousValue.md) * [useValueHistory](useValueHistory.md) * [useValidatedState](useValidatedState.md) * [useMediaQuery](useMediaQuery.md) * [useOnlineState](useOnlineState.md) * [useViewportSpy](useViewportSpy.md) * [useViewportState](useViewportState.md) * [useSpeechRecognition](useSpeechRecognition.md) and [useSpeechSynthesis](useSpeechSynthesis.md) * [useGeolocation](useGeolocation.md), [useGeolocationState](useGeolocationState.md) and [useGeolocationEvents](useGeolocationEvents.md) * [useDrag](useDrag.md), [useDropZone](useDropZone.md) and [useDragEvents](useDragEvents.md) * [useMouse](useMouse.md), [useMouseState](useMouseState.md) and [useMouseEvents](useMouseEvents.md) * [useTouch](useTouch.md), [useTouchState](useTouchState.md) and [useTouchEvents](useTouchEvents.md) * [useLifecycle](useLifecycle.md), [useDidMount](useDidMount.md) and [useWillUnmount](useWillUnmount.md) * [useWindowResize](useWindowResize.md) * [useWindowScroll](useWindowScroll.md) * [useRequestAnimationFrame](useRequestAnimationFrame.md) * [useResizeObserver](useResizeObserver.md) * [useTimeout](useTimeout.md) * [useInterval](useInterval.md) * [useDebouncedCallback](useDebouncedCallback.md) * [useThrottledCallback](useThrottledCallback.md) * [useLocalStorage](useLocalStorage.md) * [useSessionStorage](useSessionStorage.md) * [useDefaultedState](useDefaultedState.md) * [useRenderInfo](useRenderInfo.md) * [useSwipe](useSwipe.md), [useHorizontalSwipe](useHorizontalSwipe.md) and [useVerticalSwipe](useVerticalSwipe.md) * [useSwipeEvents](useSwipeEvents.md) * [useConditionalTimeout](useConditionalTimeout.md) * [useCookie](useCookie.md) * [useDarkMode](useDarkMode.md) * [useUpdateEffect](useUpdateEffect.md) * [useIsFirstRender](useIsFirstRender.md) * [useMutationObserver](useMutationObserver.md) * [useAudio](useAudio.md) * [useObjectState](useObjectState.md) * [useToggle](useToggle.md) * [useQueryParam](useQueryParam.md) * [useQueryParams](useQueryParams.md) * [useSearchQuery](useSearchQuery.md) * [useURLSearchParams](useURLSearchParams.md)

🌟 Спробуйте їх у дії тут 🌟

## Внески Ваші внески в проект дуже вітаються та потрібні. Але для подання ваших кастомних хуків, переконайтесь що ви ознайомились з нашим гайдом для [ВНЕСКІВ](https://github.com/beautifulinteractions/beautiful-react-hooks/blob/master/CONTRIBUTING.md). **Перед поданням** нового merge реквесту, будь-ласка переконайтеся: 1. Ви оновили версію package.json і повідомили про свої зміни в [CHANGELOG](https://github.com/beautifulinteractions/beautiful-react-hooks/blob/master/CHANGELOG.md) файлі 2. Переконайтеся, що ви запустили `npm test` і `npm build` перед поданням вашого merge реквесту. 3. Переконайтеся що ви додали документацію ваших кастомних хуків(*ви також можете використовувати [HOOK_DOCUMENTATION_TEMPLATE](https://github.com/beautifulinteractions/beautiful-react-hooks/blob/master/HOOK_DOCUMENTATION_TEMPLATE.md) для документації кастомних хуків*). 4. Переконайтеся що ви оновили `index.d.ts` файл з вашими типами хуків. ### За сприяння * [React](https://reactjs.org/) * [Mocha](https://mochajs.org/) * [Chai](https://www.chaijs.com/) * [@testing-library/react](https://testing-library.com/docs/react-testing-library/intro) * [@testing-library/react-hooks](https://react-hooks-testing-library.com/) --- Зображення надано [Freepik](https://www.flaticon.com/authors/freepik) з [www.flaticon.com](https://www.flaticon.com/free-icon/hook_1081812)