Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

@react-native-community/hooks

react-native-community353.6kISC100.1.0TypeScript support: included

React Native Hooks

readme

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!

changelog

React Native Hooks

100.1.0

Minor Changes

  • 56bdf51: dep list on useBackHandler

100.0.1

Patch Changes

  • a3b0915: test for canary

100.0.0

Epoch Changes

  • a bunch of deps bumped, and epoch semver

3.1.0

Minor Changes

  • 6f153b8: new version

:tada: This release contains work from a new contributor! :tada:

Thank you, Babis Kanellopoulos (@kanelloc), for all your work!

Release Notes

upgrades and types (#322)

Breaking Changes


💥 Breaking Change

🚀 Enhancement

🐛 Bug Fix

🔩 Dependency Updates

Authors: 7


v2.8.1 (Fri Nov 12 2021)

:tada: This release contains work from a new contributor! :tada:

Thank you, WhiteSource Renovate (@renovate-bot), for all your work!

🐛 Bug Fix

Authors: 3


v2.8.0 (Tue Oct 19 2021)

:tada: This release contains work from a new contributor! :tada:

Thank you, WhiteSource Renovate (@renovate-bot), for all your work!

🚀 Enhancement

  • [RN 0.65.x] Adapt unsubscription for new EventEmitter API #268 (@retyui)

🐛 Bug Fix

Authors: 3


v2.7.0 (Mon Oct 18 2021)

:tada: This release contains work from new contributors! :tada:

Thanks for all your work!

:heart: Thibault Maekelbergh (@thibmaek)

:heart: Gertjan Reynaert (@GertjanReynaert)

:heart: WhiteSource Renovate (@renovate-bot)

🚀 Enhancement

🐛 Bug Fix

Authors: 7


v2.6.0 (Fri Jun 05 2020)

:tada: This release contains work from new contributors! :tada:

Thanks for all your work!

:heart: Alan Kenyon (@adkenyon)

:heart: WhiteSource Renovate (@renovate-bot)

🚀 Enhancement

🐛 Bug Fix

Authors: 3


v2.5.1 (Fri Apr 17 2020)

:tada: This release contains work from a new contributor! :tada:

Thank you, WhiteSource Renovate (@renovate-bot), for all your work!

🐛 Bug Fix

Authors: 3


v2.5.0 (Thu Apr 16 2020)

:tada: This release contains work from a new contributor! :tada:

Thank you, null@Greg-Bush, for all your work!

🚀 Enhancement

⚠️ Pushed to master

  • Merge branch 'master' of github.com:react-native-community/hooks (@pvinis)
  • upgrade (@pvinis)

Authors: 3


v2.4.9 (Mon Apr 13 2020)

:tada: This release contains work from a new contributor! :tada:

Thank you, WhiteSource Renovate (@renovate-bot), for all your work!

🐛 Bug Fix

⚠️ Pushed to master

  • dont worry about canary, since we cant publish from forks (@pvinis)

Authors: 4


v2.4.8 (Mon Mar 30 2020)

:tada: This release contains work from new contributors! :tada:

Thanks for all your work!

:heart: Gamal Shaban (@Gamal-Shaban)

:heart: WhiteSource Renovate (@renovate-bot)

🐛 Bug Fix

⚠️ Pushed to master

Authors: 4


v2.4.7 (Thu Mar 19 2020)

:tada: This release contains work from new contributors! :tada:

Thanks for all your work!

:heart: WhiteSource Renovate (@renovate-bot)

:heart: Peter Makowski (@petermakowski)

🐛 Bug Fix

Authors: 4


v2.4.6 (Wed Mar 18 2020)

:tada: This release contains work from a new contributor! :tada:

Thank you, WhiteSource Renovate (@renovate-bot), for all your work!

🐛 Bug Fix

Authors: 4


v2.4.5 (Mon Mar 16 2020)

🐛 Bug Fix

  • Use a global list of clipboard listeners #76 (@LinusU)

Authors: 1


v2.4.4 (Mon Mar 16 2020)

:tada: This release contains work from new contributors! :tada:

Thanks for all your work!

:heart: Tihomir Valkanov (@thinklinux)

:heart: Pierre Skowron (@pistou)

🐛 Bug Fix

⚠️ Pushed to master

Authors: 6


v2.4.3 (Sat Feb 22 2020)

🐛 Bug Fix

⚠️ Pushed to master

  • use v prefix :( (@pvinis)
  • Merge branch 'master' of github.com:react-native-community/hooks (@pvinis)
  • Revert "move config out" (@pvinis)

Authors: 1


v2.4.2 (Sat Feb 22 2020)

🐛 Bug Fix

⚠️ Pushed to master

Authors: 3


(Fri Feb 21 2020)

:tada: This release contains work from new contributors! :tada:

Thanks for all your work!

:heart: Linus Unnebäck (@LinusU)

:heart: Ronaldo Lima (@ronal2do)

🚀 Enhancement

🐛 Bug Fix

Every time this function was called you will add a new addEventListener, now we passed an argument to create a new listener only when receive a new function #40 (@ronal2do)

⚠️ Pushed to master

Authors: 3