# ⚓️ `usable-react`

[![code style: airbnb](https://img.shields.io/badge/code%20style-airbnb-blue.svg?style=flat)](https://github.com/airbnb/javascript)
[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat)](https://github.com/prettier/prettier)

> Basic React hooks to get any project off the ground.

## 🔗 Installation

Install via `yarn`:

```sh
yarn add usable-react
```

Install via `npm`:

```sh
npm install usable-react
```

## Documentation

- [`useAsyncEffect`](./docs/use-async-effect.md)
- [`useCallbackConst`](./docs/use-callback-const.md)
- [`useCallbackRef`](./docs/use-callback-ref.md)
- [`useClickOutside`](./docs/use-click-outside.md)
- [`useClipboard`](./docs/use-clipboard.md)
- [`useCompare`](./docs/use-compare.md)
- [`useConst`](./docs/use-const.md)
- [`useDebounced`](./docs/use-debounced.md)
- [`useDebouncedEffect`](./docs/use-debounced-effect.md)
- [`useDomEventListeners`](./docs/use-dom-event-listeners.md)
- [`useEffectAfterMount`](./docs/use-effect-after-mount.md)
- [`useEffectOnce`](./docs/use-effect-once.md)
- [`useEffectTrigger`](./docs/use-effect-trigger.md)
- [`useFilter`](./docs/use-filter.md)
- [`useForceUpdate`](./docs/use-force-update.md)
- [`useHash`](./docs/use-hash.md)
- [`useHashCompare`](./docs/use-hash-compare.md)
- [`useInitialRender`](./docs/use-initial-render.md)
- [`useIntersectionObserver`](./docs/use-intersection-observer.md)
- [`useInterval`](./docs/use-interval.md)
- [`useIsMounted`](./docs/use-is-mounted.md)
- [`useIsomorphicLayoutEffect`](./docs/use-isomorphic-layout-effect.md)
- [`useMeasurement`](./docs/use-measurement.md)
- [`useMicrotaskEffect`](./docs/use-microtask-effect.md)
- [`usePrevious`](./docs/use-previous.md)
- [`useResizeObserver`](./docs/use-resize-observer.md)
- [`useTimer`](./docs/use-timer.md)
- [`useValueRef`](./docs/use-value-ref.md)

