# hooks **Repository Path**: mirrors_react-native-community/hooks ## Basic Information - **Project Name**: hooks - **Description**: React Native APIs turned into React Hooks for use in functional React components - **Primary Language**: Unknown - **License**: ISC - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-08-18 - **Last Updated**: 2026-03-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ![React Native Hooks](reactnativehooks.jpg) ## React Native Hooks [![Version][version-badge]][package] React Native APIs turned into React Hooks allowing you to access asynchronous APIs directly in your functional components. > Note: You must use React Native >= 0.59.0 ### Installation with npm ```sh npm install @react-native-community/hooks ``` Installation with yarn ```sh yarn add @react-native-community/hooks ``` ## API - [useAccessibilityInfo](https://github.com/react-native-community/hooks#useaccessibilityinfo) - [useAppState](https://github.com/react-native-community/hooks#useappstate) - [useBackHandler](https://github.com/react-native-community/hooks#usebackhandler) - [useImageDimensions](https://github.com/react-native-community/hooks#useImageDimensions) - [useKeyboard](https://github.com/react-native-community/hooks#usekeyboard) - [useInteractionManager](https://github.com/react-native-community/hooks#useinteractionmanager) - [useDeviceOrientation](https://github.com/react-native-community/hooks#usedeviceorientation) - [useLayout](https://github.com/react-native-community/hooks#uselayout) - [useRefresh](https://github.com/react-native-community/hooks#useRefresh) ### `useAccessibilityInfo` ```js import {useAccessibilityInfo} from '@react-native-community/hooks' const { boldTextEnabled, screenReaderEnabled, reduceMotionEnabled, // requires RN60 or newer grayscaleEnabled, // requires RN60 or newer invertColorsEnabled, // requires RN60 or newer reduceTransparencyEnabled, // requires RN60 or newer } = useAccessibilityInfo() ``` ### `useAppState` AppState will change between one of 'active', 'background', or (iOS) 'inactive' when the app is closed or put into the background. ```js import {useAppState} from '@react-native-community/hooks' const currentAppState = useAppState() ``` ### `useBackHandler` ```js import {useBackHandler} from '@react-native-community/hooks' useBackHandler(() => { if (shouldBeHandledHere) { // handle it return true } // let the default thing happen return false },[shouldBeHandledHere]) ``` ### `useImageDimensions` ```js import {useImageDimensions} from '@react-native-community/hooks' const source = require('./assets/yourImage.png') // or const source = {uri: 'https://your.image.URI'} const {dimensions, loading, error} = useImageDimensions(source) if (loading || error || !dimensions) { return null } const {width, height, aspectRatio} = dimensions ``` ### `useKeyboard` ```js import {useKeyboard} from '@react-native-community/hooks' const keyboard = useKeyboard() console.log('keyboard isKeyboardShow: ', keyboard.keyboardShown) console.log('keyboard keyboardHeight: ', keyboard.keyboardHeight) ``` ### `useInteractionManager` ```js import {useInteractionManager} from '@react-native-community/hooks' const interactionReady = useInteractionManager() console.log('interaction ready: ', interactionReady) ``` ### `useDeviceOrientation` ```js import {useDeviceOrientation} from '@react-native-community/hooks' const orientation = useDeviceOrientation() console.log('orientation is:', orientation) ``` ### `useLayout` ```js import { useLayout } from '@react-native-community/hooks' const { onLayout, ...layout } = useLayout() console.log('layout: ', layout) ``` ### `useRefresh` ```js import {useRefresh} from '@react-native-community/hooks' const fetch = () => { return new Promise((resolve) => setTimeout(resolve, 500)) } const {isRefreshing, onRefresh} = useRefresh(fetch) ; } /> ``` [version-badge]: https://img.shields.io/npm/v/@react-native-community/hooks.svg?style=flat-square [package]: https://www.npmjs.com/package/@react-native-community/hooks ## Thanks We use [Changesets](https://github.com/changesets/changesets) for managing releases and versioning. ## Contributors ✨ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):

Pavlos Vinieratos

πŸ’» 🎨 πŸ“– πŸš‡ 🚧 ⚠️

Melih

πŸ’» πŸ“– πŸš‡ ⚠️

Jesse Katsumata

πŸ’» πŸ“– 🚧 ⚠️

abhishek gupta

πŸ›

Zeljko

πŸ’»

Linus UnnebΓ€ck

πŸ’» πŸš‡ πŸ“– ⚠️

Tony Xiao

πŸ’»

Ronaldo Lima

πŸ’»

Marius Reimer

πŸ’»

Nishith Patel

πŸ’»

jozn

πŸ“–

Andrew Lisowski

πŸš‡ πŸ“¦ πŸ”§ πŸ’» πŸ“–

faraz ahmad

πŸ“–

Nader Dabit

πŸ€”

Dani Akash

πŸ’»

Dylan Vann

πŸ’»

Tihomir Valkanov

πŸ“–

Pierre Skowron

πŸ’»

Gamal Shaban

πŸ’» πŸ“– ⚠️

Greg-Bush

πŸ“– πŸ’» ⚠️ πŸš‡

Alan Kenyon

πŸ“– πŸ’»

Thibault Maekelbergh

⚠️ πŸ’»

Gertjan Reynaert

⚠️ πŸ’»

David NRB

⚠️ πŸ’» πŸ“–
This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!