![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


Una colección de hermosos (y ojalá que útiles) hooks de React para acelerar tu desarrollo de componentes y hooks

🌟Para probar clic aquí🌟

![Usage example](../usage_example.png) 🇬🇧 English | 🇨🇳 简体中文 | 🇮🇹 Italiano | 🇪🇸 Español | 🇺🇦 Ukrainian | 🇧🇷 Brazilian Portuguese | 🇵🇱 Polski | 🇯🇵 日本語 ## 💡 Por qué? React custom hooks permite abstraer la lógica de negocio de los componentes en funciones únicas reutilizables.
Hasta ahora hemos notado que la mayoría de los hooks que hemos creado y compartido en nuestros proyectos tienen un núcleo bastante similar, un núcleo que a menudo implica los mismos patrones de desarrollo (llamadas, referencias y ciclos de vida).
Por esta razón hemos tratado de resumir esa esencia en `beautiful-react-hooks`:una colección de (*esperamos*) útiles Para que React hooks sirva otras empresas y profesionales ayudando a acelerar su proceso de desarrollo.

Además, creamos un API conciso pero concreto teniendo en cuenta la legibilidad del código, centrándonos en mantener la curva de aprendizaje lo más baja posible para que pueda ser usada y compartida en equipos más grandes. **-- Por favor, antes de utilizar un hook, leer su documentación! --** ## ☕️ Características * API Consistente. * Pequeña y ligera. * Fácil de aprender.

🌟 Para probar clic aquí 🌟

## 🕺 Instalar Usando `npm`: ```bash $ npm install beautiful-react-hooks ``` Usando `yarn`: ```bash $ yarn add beautiful-react-hooks ``` ## 🎨 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)

🌟 Para probar clic aquí🌟

## Contribuir Las contribuciones son muy bienvenidas y deseadas. Para presentar su custom hook, por favor asegúrese de leer nuestro [CONTRIBUTING](../CONTRIBUTING.md) guidelines. **Antes de enviar** un nuevo merge request, por favor asegúrese: 1. Ha actualizado el package.json version e informó de sus cambios en el archivo [CHANGELOG](../CHANGELOG.md) 2. Asegúrate de ejecutar `npm test` y `npm build` antes de enviar el merge request. 3. Asegúrate de que has añadido la documentación de tu custom hook (* puedes usar el [HOOK_DOCUMENTATION_TEMPLATE](../HOOK_DOCUMENTATION_TEMPLATE.md) para documentar tu custom hook*). 4. Asegúrate de que has actualizado el `index.d.ts` el archivo de tus tipo de hook. ### Herramientas utilizadas * [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/) --- Icon desde [Freepik](https://www.flaticon.com/authors/freepik) y [www.flaticon.com](https://www.flaticon.com/free-icon/hook_1081812)