Collection of essential React Hooks. Port of
libreact
.
Translations: ๐จ๐ณ ๆฑ่ฏญ
npm i react-use
- Sensors
useBattery
โ tracks device battery state.useGeolocation
โ tracks geo location state of user's device.useHover
anduseHoverDirty
โ tracks mouse hover state of some element.useHash
โ tracks location hash value.useIdle
โ tracks whether user is being inactive.useIntersection
โ tracks an HTML element's intersection.useKey
,useKeyPress
,useKeyboardJs
, anduseKeyPressEvent
โ track keys.useLocation
anduseSearchParam
โ tracks page navigation bar location state.useLongPress
โ tracks long press gesture of some element.useMedia
โ tracks state of a CSS media query.useMediaDevices
โ tracks state of connected hardware devices.useMotion
โ tracks state of device's motion sensor.useMouse
anduseMouseHovered
โ tracks state of mouse position.useMouseWheel
โ tracks deltaY of scrolled mouse wheel.useNetworkState
โ tracks the state of browser's network connection.useOrientation
โ tracks state of device's screen orientation.usePageLeave
โ triggers when mouse leaves page boundaries.useScratch
โ tracks mouse click-and-scrub state.useScroll
โ tracks an HTML element's scroll position.useScrolling
โ tracks whether HTML element is scrolling.useStartTyping
โ detects when user starts typing.useWindowScroll
โ tracksWindow
scroll position.useWindowSize
โ tracksWindow
dimensions.useMeasure
anduseSize
โ tracks an HTML element's dimensions.createBreakpoint
โ tracksinnerWidth
useScrollbarWidth
โ detects browser's native scrollbars width.usePinchZoom
โ tracks pointer events to detect pinch zoom in and out status.
- UI
useAudio
โ plays audio and exposes its controls.useClickAway
โ triggers callback when user clicks outside target area.useCss
โ dynamically adjusts CSS.useDrop
anduseDropArea
โ tracks file, link and copy-paste drops.useFullscreen
โ display an element or video full-screen.useSlider
โ provides slide behavior over any HTML element.useSpeech
โ synthesizes speech from a text string.useVibrate
โ provide physical feedback using the Vibration API.useVideo
โ plays video, tracks its state, and exposes playback controls.
- Animations
useRaf
โ re-renders component on eachrequestAnimationFrame
.useInterval
anduseHarmonicIntervalFn
โ re-renders component on a set interval usingsetInterval
.useSpring
โ interpolates number over time according to spring dynamics.useTimeout
โ re-renders component after a timeout.useTimeoutFn
โ calls given function after a timeout.useTween
โ re-renders component, while tweening a number from 0 to 1.useUpdate
โ returns a callback, which re-renders component when called.
- Side-effects
useAsync
,useAsyncFn
, anduseAsyncRetry
โ resolves anasync
function.useBeforeUnload
โ shows browser alert when user try to reload or close the page.useCookie
โ provides way to read, update and delete a cookie.useCopyToClipboard
โ copies text to clipboard.useDebounce
โ debounces a function.useError
โ error dispatcher.useFavicon
โ sets favicon of the page.useLocalStorage
โ manages a value inlocalStorage
.useLockBodyScroll
โ lock scrolling of the body element.useRafLoop
โ calls given function inside the RAF loop.useSessionStorage
โ manages a value insessionStorage
.useThrottle
anduseThrottleFn
โ throttles a function.useTitle
โ sets title of the page.usePermission
โ query permission status for browser APIs.
- Lifecycles
useEffectOnce
โ a modifieduseEffect
hook that only runs once.useEvent
โ subscribe to events.useLifecycles
โ callsmount
andunmount
callbacks.useMountedState
anduseUnmountPromise
โ track if component is mounted.usePromise
โ resolves promise only while component is mounted.useLogger
โ logs in console as component goes through life-cycles.useMount
โ callsmount
callbacks.useUnmount
โ callsunmount
callbacks.useUpdateEffect
โ run aneffect
only on updates.useIsomorphicLayoutEffect
โuseLayoutEffect
that that works on server.useDeepCompareEffect
,useShallowCompareEffect
, anduseCustomCompareEffect
- State
createMemo
โ factory of memoized hooks.createReducer
โ factory of reducer hooks with custom middleware.createReducerContext
andcreateStateContext
โ factory of hooks for a sharing state between components.useDefault
โ returns the default value when state isnull
orundefined
.useGetSet
โ returns state getterget()
instead of raw state.useGetSetState
โ as ifuseGetSet
anduseSetState
had a baby.useLatest
โ returns the latest state or propsusePrevious
โ returns the previous state or props.usePreviousDistinct
โ likeusePrevious
but with a predicate to determine ifprevious
should update.useObservable
โ tracks latest value of anObservable
.useRafState
โ createssetState
method which only updates afterrequestAnimationFrame
.useSetState
โ createssetState
method which works likethis.setState
.useStateList
โ circularly iterates over an array.useToggle
anduseBoolean
โ tracks state of a boolean.useCounter
anduseNumber
โ tracks state of a number.useList
andโ tracks state of an array.useUpsert
useMap
โ tracks state of an object.useSet
โ tracks state of a Set.useQueue
โ implements simple queue.useStateValidator
โ tracks state of an object.useStateWithHistory
โ stores previous state values and provides handles to travel through them.useMultiStateValidator
โ alike theuseStateValidator
, but tracks multiple states at a time.useMediatedState
โ like the regularuseState
but with mediation by custom function.useFirstMountState
โ check if current render is first.useRendersCount
โ count component renders.createGlobalState
โ cross component shared state.useMethods
โ neat alternative touseReducer
.
- Miscellaneous
useEnsuredForwardedRef
andensuredForwardRef
โ use a React.forwardedRef safely.
Usage โ how to import.
Unlicense โ public domain.
Support โ add yourself to backer list below.