{"id":13406855,"url":"https://github.com/streamich/react-use","last_synced_at":"2025-05-12T14:51:36.602Z","repository":{"id":37413179,"uuid":"154950925","full_name":"streamich/react-use","owner":"streamich","description":"React Hooks — 👍","archived":false,"fork":false,"pushed_at":"2025-04-13T08:23:03.000Z","size":83730,"stargazers_count":42982,"open_issues_count":622,"forks_count":3225,"subscribers_count":259,"default_branch":"master","last_synced_at":"2025-05-05T13:56:02.019Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://streamich.github.io/react-use","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"unlicense","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/streamich.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":["streamich","wardoost","xobotyi","Belco90","ankithkonda","ayush987goyal","NullVoxPopuli","lintuming","Granipouss","ythecombinator","james2406","jakapatb","MrHuangJser","zaguiini","ppeeou","liuyuchenzh","brickspert","artywhite","PetterIve","realdennis","lvl99","gelove","KusStar","xiaoxiangmoe","nmccready","mattleonowicz","kevinnorris","dubzzz","dependabot[bot]","ShizukuIchi","ManojBahuguna","Jivings","Dosant","zsh2401","xiaoboost","revskill10","mtinner","monkeywithacupcake","mitchheddles","maxzitron","macinjoke","jeetiss","ilyalesik","hijiangtao","f","elliottsj","droganov","denysdovhan","dabuside","benneq","azukaar","ariesjia","andrico1234","adesurirey","OBe95","FredyC","Cretezy","zyy7259","zslabs","vinitsood","uxitten","thevtm","tanem","suyingtao","srph","rkostrzewski","qianL93","o-alexandrov","nucleartux","natew","maxmalov","liaoyinglong","koenvanzuijlen","josmardias","jeemyeong","jazzqi","jakyle","jakeboone02","inker","glarivie","garrettmaring","dovidweisz","daniel-hauser","d-asensio","charlax","TylerR909","Rogdham","OctoD","MajorBreakfast","Jfelix61","Flydiverny","FlickerLogicalStack","DmacMcgreg","Dattaya","Andrey-Bazhanov","AlvaroBernalG"]}},"created_at":"2018-10-27T10:16:05.000Z","updated_at":"2025-05-05T11:45:14.000Z","dependencies_parsed_at":"2022-07-14T08:49:32.179Z","dependency_job_id":"23ae8cf8-5303-474c-ab6c-f502c91da113","html_url":"https://github.com/streamich/react-use","commit_stats":{"total_commits":2537,"total_committers":197,"mean_commits":"12.878172588832488","dds":0.5865195112337407,"last_synced_commit":"e1d0cd9f7fb2a124a9d46879489abfefdf48d836"},"previous_names":[],"tags_count":265,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/streamich%2Freact-use","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/streamich%2Freact-use/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/streamich%2Freact-use/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/streamich%2Freact-use/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/streamich","download_url":"https://codeload.github.com/streamich/react-use/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253433682,"owners_count":21907775,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-07-30T19:02:41.155Z","updated_at":"2025-05-12T14:51:36.575Z","avatar_url":"https://github.com/streamich.png","language":"TypeScript","readme":"\u003cdiv align=\"center\"\u003e\n  \u003ch1\u003e\n    \u003cbr/\u003e\n    \u003cbr/\u003e\n    👍\n    \u003cbr /\u003e\n    react-use\n    \u003cbr /\u003e\n    \u003cbr /\u003e\n    \u003cbr /\u003e\n    \u003cbr /\u003e\n  \u003c/h1\u003e\n  \u003csup\u003e\n    \u003cbr /\u003e\n    \u003cbr /\u003e\n    \u003ca href=\"https://www.npmjs.com/package/react-use\"\u003e\n       \u003cimg src=\"https://img.shields.io/npm/v/react-use.svg\" alt=\"npm package\" /\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://circleci.com/gh/streamich/react-use\"\u003e\n      \u003cimg src=\"https://img.shields.io/circleci/project/github/streamich/react-use/master.svg\" alt=\"CircleCI master\" /\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://www.npmjs.com/package/react-use\"\u003e\n      \u003cimg src=\"https://img.shields.io/npm/dm/react-use.svg\" alt=\"npm downloads\" /\u003e\n    \u003c/a\u003e\n    \u003ca href=\"http://streamich.github.io/react-use\"\u003e\n      \u003cimg src=\"https://img.shields.io/badge/demos-🚀-yellow.svg\" alt=\"demos\" /\u003e\n    \u003c/a\u003e\n    \u003cbr /\u003e\n    Collection of essential \u003ca href=\"https://reactjs.org/docs/hooks-intro.html\"\u003eReact Hooks\u003c/a\u003e.\u003c/em\u003e\n    \u003cem\u003ePort of\u003c/em\u003e \u003ca href=\"https://github.com/streamich/libreact\"\u003e\u003ccode\u003elibreact\u003c/code\u003e\u003c/a\u003e.\n    \u003cbr /\u003e\n    Translations: \u003ca href=\"https://github.com/zenghongtu/react-use-chinese/blob/master/README.md\"\u003e🇨🇳 汉语\u003c/a\u003e\n  \u003c/sup\u003e\n  \u003cbr /\u003e\n  \u003cbr /\u003e\n  \u003cbr /\u003e\n  \u003cbr /\u003e\n  \u003cpre\u003enpm i \u003ca href=\"https://www.npmjs.com/package/react-use\"\u003ereact-use\u003c/a\u003e\u003c/pre\u003e\n  \u003cbr /\u003e\n  \u003cbr /\u003e\n  \u003cbr /\u003e\n  \u003cbr /\u003e\n  \u003cbr /\u003e\n\u003c/div\u003e\n\n- [**Sensors**](./docs/Sensors.md)\n  - [`useBattery`](./docs/useBattery.md) \u0026mdash; tracks device battery state. [![][img-demo]](https://codesandbox.io/s/qlvn662zww)\n  - [`useGeolocation`](./docs/useGeolocation.md) \u0026mdash; tracks geo location state of user's device. [![][img-demo]](https://streamich.github.io/react-use/?path=/story/sensors-usegeolocation--demo)\n  - [`useHover` and `useHoverDirty`](./docs/useHover.md) \u0026mdash; tracks mouse hover state of some element. [![][img-demo]](https://codesandbox.io/s/zpn583rvx)\n  - [`useHash`](./docs/useHash.md) \u0026mdash; tracks location hash value. [![][img-demo]](https://streamich.github.io/react-use/?path=/story/sensors-usehash--demo)\n  - [`useIdle`](./docs/useIdle.md) \u0026mdash; tracks whether user is being inactive.\n  - [`useIntersection`](./docs/useIntersection.md) \u0026mdash; tracks an HTML element's intersection. [![][img-demo]](https://streamich.github.io/react-use/?path=/story/sensors-useintersection--demo)\n  - [`useKey`](./docs/useKey.md), [`useKeyPress`](./docs/useKeyPress.md), [`useKeyboardJs`](./docs/useKeyboardJs.md), and [`useKeyPressEvent`](./docs/useKeyPressEvent.md) \u0026mdash; track keys. [![][img-demo]](https://streamich.github.io/react-use/?path=/story/sensors-usekeypressevent--demo)\n  - [`useLocation`](./docs/useLocation.md) and [`useSearchParam`](./docs/useSearchParam.md) \u0026mdash; tracks page navigation bar location state.\n  - [`useLongPress`](./docs/useLongPress.md) \u0026mdash; tracks long press gesture of some element.\n  - [`useMedia`](./docs/useMedia.md) \u0026mdash; tracks state of a CSS media query. [![][img-demo]](https://streamich.github.io/react-use/?path=/story/sensors-usemedia--demo)\n  - [`useMediaDevices`](./docs/useMediaDevices.md) \u0026mdash; tracks state of connected hardware devices.\n  - [`useMotion`](./docs/useMotion.md) \u0026mdash; tracks state of device's motion sensor.\n  - [`useMouse` and `useMouseHovered`](./docs/useMouse.md) \u0026mdash; tracks state of mouse position. [![][img-demo]](https://streamich.github.io/react-use/?path=/story/sensors-usemouse--docs)\n  - [`useMouseWheel`](./docs/useMouseWheel.md) \u0026mdash; tracks deltaY of scrolled mouse wheel. [![][img-demo]](https://streamich.github.io/react-use/?path=/story/sensors-usemousewheel--docs)\n  - [`useNetworkState`](./docs/useNetworkState.md) \u0026mdash; tracks the state of browser's network connection. [![][img-demo]](https://streamich.github.io/react-use/?path=/story/sensors-usenetworkstate--demo)\n  - [`useOrientation`](./docs/useOrientation.md) \u0026mdash; tracks state of device's screen orientation.\n  - [`usePageLeave`](./docs/usePageLeave.md) \u0026mdash; triggers when mouse leaves page boundaries.\n  - [`useScratch`](./docs/useScratch.md) \u0026mdash; tracks mouse click-and-scrub state.\n  - [`useScroll`](./docs/useScroll.md) \u0026mdash; tracks an HTML element's scroll position. [![][img-demo]](https://streamich.github.io/react-use/?path=/story/sensors-usescroll--docs)\n  - [`useScrolling`](./docs/useScrolling.md) \u0026mdash; tracks whether HTML element is scrolling.\n  - [`useStartTyping`](./docs/useStartTyping.md) \u0026mdash; detects when user starts typing.\n  - [`useWindowScroll`](./docs/useWindowScroll.md) \u0026mdash; tracks `Window` scroll position. [![][img-demo]](https://streamich.github.io/react-use/?path=/story/sensors-usewindowscroll--docs)\n  - [`useWindowSize`](./docs/useWindowSize.md) \u0026mdash; tracks `Window` dimensions. [![][img-demo]](https://codesandbox.io/s/m7ln22668)\n  - [`useMeasure`](./docs/useMeasure.md) and [`useSize`](./docs/useSize.md) \u0026mdash; tracks an HTML element's dimensions. [![][img-demo]](https://streamich.github.io/react-use/?path=/story/sensors-usemeasure--demo)\n  - [`createBreakpoint`](./docs/createBreakpoint.md) \u0026mdash; tracks `innerWidth`\n  - [`useScrollbarWidth`](./docs/useScrollbarWidth.md) \u0026mdash; detects browser's native scrollbars width. [![][img-demo]](https://streamich.github.io/react-use/?path=/story/sensors-usescrollbarwidth--demo)\n  - [`usePinchZoom`](./docs/usePinchZoom.md) \u0026mdash; tracks pointer events to detect pinch zoom in and out status. [![][img-demo]](https://streamich.github.io/react-use/?path=/story/sensors-usePinchZoom--demo)\n    \u003cbr/\u003e\n    \u003cbr/\u003e\n- [**UI**](./docs/UI.md)\n  - [`useAudio`](./docs/useAudio.md) \u0026mdash; plays audio and exposes its controls. [![][img-demo]](https://codesandbox.io/s/2o4lo6rqy)\n  - [`useClickAway`](./docs/useClickAway.md) \u0026mdash; triggers callback when user clicks outside target area.\n  - [`useCss`](./docs/useCss.md) \u0026mdash; dynamically adjusts CSS.\n  - [`useDrop` and `useDropArea`](./docs/useDrop.md) \u0026mdash; tracks file, link and copy-paste drops.\n  - [`useFullscreen`](./docs/useFullscreen.md) \u0026mdash; display an element or video full-screen. [![][img-demo]](https://streamich.github.io/react-use/?path=/story/ui-usefullscreen--demo)\n  - [`useSlider`](./docs/useSlider.md) \u0026mdash; provides slide behavior over any HTML element. [![][img-demo]](https://streamich.github.io/react-use/?path=/story/ui-useslider--demo)\n  - [`useSpeech`](./docs/useSpeech.md) \u0026mdash; synthesizes speech from a text string. [![][img-demo]](https://codesandbox.io/s/n090mqz69m)\n  - [`useVibrate`](./docs/useVibrate.md) \u0026mdash; provide physical feedback using the [Vibration API](https://developer.mozilla.org/en-US/docs/Web/API/Vibration_API). [![][img-demo]](https://streamich.github.io/react-use/?path=/story/ui-usevibrate--demo)\n  - [`useVideo`](./docs/useVideo.md) \u0026mdash; plays video, tracks its state, and exposes playback controls. [![][img-demo]](https://streamich.github.io/react-use/?path=/story/ui-usevideo--demo)\n    \u003cbr/\u003e\n    \u003cbr/\u003e\n- [**Animations**](./docs/Animations.md)\n  - [`useRaf`](./docs/useRaf.md) \u0026mdash; re-renders component on each `requestAnimationFrame`.\n  - [`useInterval`](./docs/useInterval.md) and [`useHarmonicIntervalFn`](./docs/useHarmonicIntervalFn.md) \u0026mdash; re-renders component on a set interval using `setInterval`.\n  - [`useSpring`](./docs/useSpring.md) \u0026mdash; interpolates number over time according to spring dynamics.\n  - [`useTimeout`](./docs/useTimeout.md) \u0026mdash; re-renders component after a timeout.\n  - [`useTimeoutFn`](./docs/useTimeoutFn.md) \u0026mdash; calls given function after a timeout. [![][img-demo]](https://streamich.github.io/react-use/?path=/story/animation-usetimeoutfn--demo)\n  - [`useTween`](./docs/useTween.md) \u0026mdash; re-renders component, while tweening a number from 0 to 1. [![][img-demo]](https://codesandbox.io/s/52990wwzyl)\n  - [`useUpdate`](./docs/useUpdate.md) \u0026mdash; returns a callback, which re-renders component when called.\n    \u003cbr/\u003e\n    \u003cbr/\u003e\n- [**Side-effects**](./docs/Side-effects.md)\n  - [`useAsync`](./docs/useAsync.md), [`useAsyncFn`](./docs/useAsyncFn.md), and [`useAsyncRetry`](./docs/useAsyncRetry.md) \u0026mdash; resolves an `async` function.\n  - [`useBeforeUnload`](./docs/useBeforeUnload.md) \u0026mdash; shows browser alert when user try to reload or close the page.\n  - [`useCookie`](./docs/useCookie.md) \u0026mdash; provides way to read, update and delete a cookie. [![][img-demo]](https://streamich.github.io/react-use/?path=/story/side-effects-usecookie--demo)\n  - [`useCopyToClipboard`](./docs/useCopyToClipboard.md) \u0026mdash; copies text to clipboard.\n  - [`useDebounce`](./docs/useDebounce.md) \u0026mdash; debounces a function. [![][img-demo]](https://streamich.github.io/react-use/?path=/story/side-effects-usedebounce--demo)\n  - [`useError`](./docs/useError.md) \u0026mdash; error dispatcher. [![][img-demo]](https://streamich.github.io/react-use/?path=/story/side-effects-useerror--demo)\n  - [`useFavicon`](./docs/useFavicon.md) \u0026mdash; sets favicon of the page.\n  - [`useLocalStorage`](./docs/useLocalStorage.md) \u0026mdash; manages a value in `localStorage`.\n  - [`useLockBodyScroll`](./docs/useLockBodyScroll.md) \u0026mdash; lock scrolling of the body element.\n  - [`useRafLoop`](./docs/useRafLoop.md) \u0026mdash; calls given function inside the RAF loop.\n  - [`useSessionStorage`](./docs/useSessionStorage.md) \u0026mdash; manages a value in `sessionStorage`.\n  - [`useThrottle` and `useThrottleFn`](./docs/useThrottle.md) \u0026mdash; throttles a function. [![][img-demo]](https://streamich.github.io/react-use/?path=/story/side-effects-usethrottle--demo)\n  - [`useTitle`](./docs/useTitle.md) \u0026mdash; sets title of the page.\n  - [`usePermission`](./docs/usePermission.md) \u0026mdash; query permission status for browser APIs.\n    \u003cbr/\u003e\n    \u003cbr/\u003e\n- [**Lifecycles**](./docs/Lifecycles.md)\n  - [`useEffectOnce`](./docs/useEffectOnce.md) \u0026mdash; a modified [`useEffect`](https://reactjs.org/docs/hooks-reference.html#useeffect) hook that only runs once.\n  - [`useEvent`](./docs/useEvent.md) \u0026mdash; subscribe to events.\n  - [`useLifecycles`](./docs/useLifecycles.md) \u0026mdash; calls `mount` and `unmount` callbacks.\n  - [`useMountedState`](./docs/useMountedState.md) and [`useUnmountPromise`](./docs/useUnmountPromise.md) \u0026mdash; track if component is mounted.\n  - [`usePromise`](./docs/usePromise.md) \u0026mdash; resolves promise only while component is mounted.\n  - [`useLogger`](./docs/useLogger.md) \u0026mdash; logs in console as component goes through life-cycles.\n  - [`useMount`](./docs/useMount.md) \u0026mdash; calls `mount` callbacks.\n  - [`useUnmount`](./docs/useUnmount.md) \u0026mdash; calls `unmount` callbacks.\n  - [`useUpdateEffect`](./docs/useUpdateEffect.md) \u0026mdash; run an `effect` only on updates.\n  - [`useIsomorphicLayoutEffect`](./docs/useIsomorphicLayoutEffect.md) \u0026mdash; `useLayoutEffect` that that works on server.\n  - [`useDeepCompareEffect`](./docs/useDeepCompareEffect.md), [`useShallowCompareEffect`](./docs/useShallowCompareEffect.md), and [`useCustomCompareEffect`](./docs/useCustomCompareEffect.md)\n    \u003cbr/\u003e\n    \u003cbr/\u003e\n- [**State**](./docs/State.md)\n  - [`createMemo`](./docs/createMemo.md) \u0026mdash; factory of memoized hooks.\n  - [`createReducer`](./docs/createReducer.md) \u0026mdash; factory of reducer hooks with custom middleware.\n  - [`createReducerContext`](./docs/createReducerContext.md) and [`createStateContext`](./docs/createStateContext.md) \u0026mdash; factory of hooks for a sharing state between components.\n  - [`useDefault`](./docs/useDefault.md) \u0026mdash; returns the default value when state is `null` or `undefined`.\n  - [`useGetSet`](./docs/useGetSet.md) \u0026mdash; returns state getter `get()` instead of raw state.\n  - [`useGetSetState`](./docs/useGetSetState.md) \u0026mdash; as if [`useGetSet`](./docs/useGetSet.md) and [`useSetState`](./docs/useSetState.md) had a baby.\n  - [`useLatest`](./docs/useLatest.md) \u0026mdash; returns the latest state or props\n  - [`usePrevious`](./docs/usePrevious.md) \u0026mdash; returns the previous state or props. [![][img-demo]](https://codesandbox.io/s/fervent-galileo-krgx6)\n  - [`usePreviousDistinct`](./docs/usePreviousDistinct.md) \u0026mdash; like `usePrevious` but with a predicate to determine if `previous` should update.\n  - [`useObservable`](./docs/useObservable.md) \u0026mdash; tracks latest value of an `Observable`.\n  - [`useRafState`](./docs/useRafState.md) \u0026mdash; creates `setState` method which only updates after `requestAnimationFrame`. [![][img-demo]](https://streamich.github.io/react-use/?path=/story/state-userafstate--demo)\n  - [`useSetState`](./docs/useSetState.md) \u0026mdash; creates `setState` method which works like `this.setState`. [![][img-demo]](https://codesandbox.io/s/n75zqn1xp0)\n  - [`useStateList`](./docs/useStateList.md) \u0026mdash; circularly iterates over an array. [![][img-demo]](https://codesandbox.io/s/bold-dewdney-pjzkd)\n  - [`useToggle` and `useBoolean`](./docs/useToggle.md) \u0026mdash; tracks state of a boolean. [![][img-demo]](https://codesandbox.io/s/focused-sammet-brw2d)\n  - [`useCounter` and `useNumber`](./docs/useCounter.md) \u0026mdash; tracks state of a number. [![][img-demo]](https://streamich.github.io/react-use/?path=/story/state-usecounter--demo)\n  - [`useList`](./docs/useList.md) ~and [`useUpsert`](./docs/useUpsert.md)~ \u0026mdash; tracks state of an array. [![][img-demo]](https://codesandbox.io/s/wonderful-mahavira-1sm0w)\n  - [`useMap`](./docs/useMap.md) \u0026mdash; tracks state of an object. [![][img-demo]](https://codesandbox.io/s/quirky-dewdney-gi161)\n  - [`useSet`](./docs/useSet.md) \u0026mdash; tracks state of a Set. [![][img-demo]](https://codesandbox.io/s/bold-shtern-6jlgw)\n  - [`useQueue`](./docs/useQueue.md) \u0026mdash; implements simple queue.\n  - [`useStateValidator`](./docs/useStateValidator.md) \u0026mdash; tracks state of an object. [![][img-demo]](https://streamich.github.io/react-use/?path=/story/state-usestatevalidator--demo)\n  - [`useStateWithHistory`](./docs/useStateWithHistory.md) \u0026mdash; stores previous state values and provides handles to travel through them. [![][img-demo]](https://streamich.github.io/react-use/?path=/story/state-usestatewithhistory--demo)\n  - [`useMultiStateValidator`](./docs/useMultiStateValidator.md) \u0026mdash; alike the `useStateValidator`, but tracks multiple states at a time. [![][img-demo]](https://streamich.github.io/react-use/?path=/story/state-usemultistatevalidator--demo)\n  - [`useMediatedState`](./docs/useMediatedState.md) \u0026mdash; like the regular `useState` but with mediation by custom function. [![][img-demo]](https://streamich.github.io/react-use/?path=/story/state-usemediatedstate--demo)\n  - [`useFirstMountState`](./docs/useFirstMountState.md) \u0026mdash; check if current render is first. [![][img-demo]](https://streamich.github.io/react-use/?path=/story/state-usefirstmountstate--demo)\n  - [`useRendersCount`](./docs/useRendersCount.md) \u0026mdash; count component renders. [![][img-demo]](https://streamich.github.io/react-use/?path=/story/state-userenderscount--demo)\n  - [`createGlobalState`](./docs/createGlobalState.md) \u0026mdash; cross component shared state.[![][img-demo]](https://streamich.github.io/react-use/?path=/story/state-createglobalstate--demo)\n  - [`useMethods`](./docs/useMethods.md) \u0026mdash; neat alternative to `useReducer`. [![][img-demo]](https://streamich.github.io/react-use/?path=/story/state-usemethods--demo)\n    \u003cbr/\u003e\n    \u003cbr/\u003e\n- [**Miscellaneous**]()\n  - [`useEnsuredForwardedRef`](./docs/useEnsuredForwardedRef.md) and [`ensuredForwardRef`](./docs/useEnsuredForwardedRef.md) \u0026mdash; use a React.forwardedRef safely. [![][img-demo]](https://streamich.github.io/react-use/?path=/story/state-useensuredforwardedref--demo)\n\n\u003cbr /\u003e\n\u003cbr /\u003e\n\u003cbr /\u003e\n\u003cbr /\u003e\n\u003cbr /\u003e\n\u003cbr /\u003e\n\u003cbr /\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"./docs/Usage.md\"\u003e\u003cstrong\u003eUsage\u003c/strong\u003e\u003c/a\u003e \u0026mdash; how to import.\n  \u003cbr /\u003e\n  \u003ca href=\"./LICENSE\"\u003e\u003cstrong\u003eUnlicense\u003c/strong\u003e\u003c/a\u003e \u0026mdash; public domain.\n  \u003cbr /\u003e\n  \u003ca href=\"https://opencollective.com/react-use/contribute\"\u003e\u003cstrong\u003eSupport\u003c/strong\u003e\u003c/a\u003e \u0026mdash; add yourself to backer list below.\n\u003c/p\u003e\n\n\u003cbr /\u003e\n\u003cbr /\u003e\n\u003cbr /\u003e\n\u003cbr /\u003e\n\u003cbr /\u003e\n\n[img-demo]: https://img.shields.io/badge/demo-%20%20%20%F0%9F%9A%80-green.svg\n\n\u003cdiv align=\"center\"\u003e\n  \u003ch1\u003eContributors\u003c/h1\u003e\n\u003c/div\u003e\n\n\u003cbr /\u003e\n\u003cbr /\u003e\n\n\u003ca href=\"https://github.com/streamich/react-use/graphs/contributors\"\u003e\u003cimg src=\"https://opencollective.com/react-use/contributors.svg?width=890\u0026button=false\" /\u003e\u003c/a\u003e\n\n\u003cbr /\u003e\n\u003cbr /\u003e\n\u003cbr /\u003e\n\u003cbr /\u003e\n\u003cbr /\u003e\n","funding_links":["https://github.com/sponsors/streamich","https://github.com/sponsors/wardoost","https://github.com/sponsors/xobotyi","https://github.com/sponsors/Belco90","https://github.com/sponsors/ankithkonda","https://github.com/sponsors/ayush987goyal","https://github.com/sponsors/NullVoxPopuli","https://github.com/sponsors/lintuming","https://github.com/sponsors/Granipouss","https://github.com/sponsors/ythecombinator","https://github.com/sponsors/james2406","https://github.com/sponsors/jakapatb","https://github.com/sponsors/MrHuangJser","https://github.com/sponsors/zaguiini","https://github.com/sponsors/ppeeou","https://github.com/sponsors/liuyuchenzh","https://github.com/sponsors/brickspert","https://github.com/sponsors/artywhite","https://github.com/sponsors/PetterIve","https://github.com/sponsors/realdennis","https://github.com/sponsors/lvl99","https://github.com/sponsors/gelove","https://github.com/sponsors/KusStar","https://github.com/sponsors/xiaoxiangmoe","https://github.com/sponsors/nmccready","https://github.com/sponsors/mattleonowicz","https://github.com/sponsors/kevinnorris","https://github.com/sponsors/dubzzz","https://github.com/sponsors/dependabot[bot]","https://github.com/sponsors/ShizukuIchi","https://github.com/sponsors/ManojBahuguna","https://github.com/sponsors/Jivings","https://github.com/sponsors/Dosant","https://github.com/sponsors/zsh2401","https://github.com/sponsors/xiaoboost","https://github.com/sponsors/revskill10","https://github.com/sponsors/mtinner","https://github.com/sponsors/monkeywithacupcake","https://github.com/sponsors/mitchheddles","https://github.com/sponsors/maxzitron","https://github.com/sponsors/macinjoke","https://github.com/sponsors/jeetiss","https://github.com/sponsors/ilyalesik","https://github.com/sponsors/hijiangtao","https://github.com/sponsors/f","https://github.com/sponsors/elliottsj","https://github.com/sponsors/droganov","https://github.com/sponsors/denysdovhan","https://github.com/sponsors/dabuside","https://github.com/sponsors/benneq","https://github.com/sponsors/azukaar","https://github.com/sponsors/ariesjia","https://github.com/sponsors/andrico1234","https://github.com/sponsors/adesurirey","https://github.com/sponsors/OBe95","https://github.com/sponsors/FredyC","https://github.com/sponsors/Cretezy","https://github.com/sponsors/zyy7259","https://github.com/sponsors/zslabs","https://github.com/sponsors/vinitsood","https://github.com/sponsors/uxitten","https://github.com/sponsors/thevtm","https://github.com/sponsors/tanem","https://github.com/sponsors/suyingtao","https://github.com/sponsors/srph","https://github.com/sponsors/rkostrzewski","https://github.com/sponsors/qianL93","https://github.com/sponsors/o-alexandrov","https://github.com/sponsors/nucleartux","https://github.com/sponsors/natew","https://github.com/sponsors/maxmalov","https://github.com/sponsors/liaoyinglong","https://github.com/sponsors/koenvanzuijlen","https://github.com/sponsors/josmardias","https://github.com/sponsors/jeemyeong","https://github.com/sponsors/jazzqi","https://github.com/sponsors/jakyle","https://github.com/sponsors/jakeboone02","https://github.com/sponsors/inker","https://github.com/sponsors/glarivie","https://github.com/sponsors/garrettmaring","https://github.com/sponsors/dovidweisz","https://github.com/sponsors/daniel-hauser","https://github.com/sponsors/d-asensio","https://github.com/sponsors/charlax","https://github.com/sponsors/TylerR909","https://github.com/sponsors/Rogdham","https://github.com/sponsors/OctoD","https://github.com/sponsors/MajorBreakfast","https://github.com/sponsors/Jfelix61","https://github.com/sponsors/Flydiverny","https://github.com/sponsors/FlickerLogicalStack","https://github.com/sponsors/DmacMcgreg","https://github.com/sponsors/Dattaya","https://github.com/sponsors/Andrey-Bazhanov","https://github.com/sponsors/AlvaroBernalG","https://opencollective.com/react-use/contribute"],"categories":["Others","TypeScript","Packages","HarmonyOS","语言资源库","[React](https://github.com/facebook/react/)","Utilities","Uncategorized","Frontend React","React Libraries","目录","UI","Credits","React","Batteries included","Extensions/Libraries","others","🧰 React Toolkit","🧩 React \u0026 Frontend Architecture","Ready-Made Reactjs Hooks","Thanks"],"sub_categories":["Windows Manager","typescript","Hooks Collection","Uncategorized","Utilities","React相关","React","Hooks","React Components","Vue 2","Hook","\u003ca id=\"hook\"\u003ehook\u003c/a\u003e"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstreamich%2Freact-use","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstreamich%2Freact-use","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstreamich%2Freact-use/lists"}