Package Exports
- @react-hook/throttle
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@react-hook/throttle) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
useThrottle()
npm i @react-hook/throttle
A React hook for performantly throttling setState
and other callbacks.
Quick Start
import {useThrottle, useThrottleCallback} from '@react-hook/throttle'
const Component = (props) => {
// at a basic level, used just like useState
const [value, setValue] = useThrottle('initialValue')
}
const useMyCallback = (initialState, wait, leading) => {
// this is the same code useThrottle() uses to throttle setState
const [state, setState] = useState(initialState)
return [state, useThrottleCallback(setState, wait, leading)]
}
API
useThrottle(initialState, fps?, leading?)
A hook that acts just like React.useState
, but with a setState
function
that is only invoked at most X frames per second. A trailing call is guaranteed,
but you may opt-in to calling on the leading edge, as well.
export const useThrottle = <State>(
initialState: State | (() => State),
fps?: number,
leading?: boolean
): [State, Dispatch<SetStateAction<State>>]
Arguments
Property | Type | Default | Description |
---|---|---|---|
initialState | `State | (() => State)` | |
fps | number |
30 |
Defines the rate in frames per second with which setState is invoked with new state |
leading | boolean |
false |
Calls setState on the leading edge (right away). When false , setState will not be called until the next frame is due |
Returns [state, setState]
Variable | Type | Description |
---|---|---|
state | State |
The current value in state |
setState | Dispatch<SetStateAction<State>> |
A throttled setState callback |
useThrottleCallback(callback, fps?, leading?)
A hook that invokes its callback at most X frames per second. A trailing call is guaranteed, but you may opt-in to calling on the leading edge, as well.
export const useThrottleCallback = <Callback extends (...args: any[]) => void>(
callback: Callback,
fps = 30,
leading = false
): Callback
Arguments
Property | Type | Default | Description |
---|---|---|---|
callback | ((...args: CallbackArgs) => void) |
This is the callback you want to throttle. You need to wrap closures/unstable callbacks in useCallback() so that they are stable, otherwise throttling will break between renders. |
|
fps | number |
30 |
Defines the rate in frames per second with which setState is invoked with new state |
leading | boolean |
false |
Calls setState on the leading edge (right away). When false , setState will not be called until the next frame is due |
Returns throttledCallback
Variable | Type | Description |
---|---|---|
throttledCallback | ((...args: CallbackArgs) => void) |
A throttled version of your callback |
LICENSE
MIT