Skip to content

react-native-community/hooks

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

682 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

React Native Hooks

React Native Hooks

Version

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

npm install @react-native-community/hooks

Installation with yarn

yarn add @react-native-community/hooks

API

useAccessibilityInfo

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.

import {useAppState} from '@react-native-community/hooks'

const currentAppState = useAppState()

useBackHandler

import {useBackHandler} from '@react-native-community/hooks'

useBackHandler(() => {
  if (shouldBeHandledHere) {
    // handle it
    return true
  }
  // let the default thing happen
  return false
},[shouldBeHandledHere])

useImageDimensions

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

import {useKeyboard} from '@react-native-community/hooks'

const keyboard = useKeyboard()

console.log('keyboard isKeyboardShow: ', keyboard.keyboardShown)
console.log('keyboard keyboardHeight: ', keyboard.keyboardHeight)

useInteractionManager

import {useInteractionManager} from '@react-native-community/hooks'

const interactionReady = useInteractionManager()

console.log('interaction ready: ', interactionReady)

useDeviceOrientation

import {useDeviceOrientation} from '@react-native-community/hooks'

const orientation = useDeviceOrientation()

console.log('orientation is:', orientation)

useLayout

import { useLayout } from '@react-native-community/hooks'

const { onLayout, ...layout } = useLayout()

console.log('layout: ', layout)

<View onLayout={onLayout} style={{width: 200, height: 200, marginTop: 30}} />

useRefresh

import {useRefresh} from '@react-native-community/hooks'

const fetch = () => {
  return new Promise((resolve) => setTimeout(resolve, 500))
}

const {isRefreshing, onRefresh} = useRefresh(fetch)

;<ScrollView
  refreshControl={
    <RefreshControl refreshing={isRefreshing} onRefresh={onRefresh} />
  }
/>

Thanks

We use Changesets for managing releases and versioning.

Contributors โœจ

Thanks goes to these wonderful people (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 specification. Contributions of any kind welcome!

About

React Native APIs turned into React Hooks for use in functional React components

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors