diff --git a/README.md b/README.md
index 9389ff6464..40b6a3611e 100644
--- a/README.md
+++ b/README.md
@@ -78,7 +78,7 @@
- [`useLocalStorage`](./docs/useLocalStorage.md) — manages a value in `localStorage`.
- [`useLockBodyScroll`](./docs/useLockBodyScroll.md) — lock scrolling of the body element.
- [`useSessionStorage`](./docs/useSessionStorage.md) — manages a value in `sessionStorage`.
- - [`useThrottle`](./docs/useThrottle.md) — throttles a function. [![][img-demo]](https://streamich.github.io/react-use/?path=/story/side-effects-usethrottle--demo)
+ - [`useThrottle` and `useThrottleFn`](./docs/useThrottle.md) — throttles a function. [![][img-demo]](https://streamich.github.io/react-use/?path=/story/side-effects-usethrottle--demo)
- [`useTitle`](./docs/useTitle.md) — sets title of the page.
diff --git a/docs/useThrottle.md b/docs/useThrottle.md
index 60c1cae86f..7557cee256 100644
--- a/docs/useThrottle.md
+++ b/docs/useThrottle.md
@@ -1,15 +1,16 @@
-# `useThrottle`
+# `useThrottle` and `useThrottleFn`
-React hook that throttles a value.
+React hooks that throttle.
## Usage
```jsx
import React, { useState } from 'react';
-import { useThrottle } from 'react-use';
+import { useThrottle, useThrottleFn } from 'react-use';
const Demo = ({value}) => {
const throttledValue = useThrottle(value);
+ // const throttledValue = useThrottleFn(value => value, 200, [value]);
return (
<>
@@ -24,4 +25,5 @@ const Demo = ({value}) => {
```ts
useThrottle(value, ms?: number);
+useThrottleFn(fn, ms, args);
```
diff --git a/src/__stories__/useThrottleFn.story.tsx b/src/__stories__/useThrottleFn.story.tsx
new file mode 100644
index 0000000000..ab97a63001
--- /dev/null
+++ b/src/__stories__/useThrottleFn.story.tsx
@@ -0,0 +1,40 @@
+import * as React from 'react';
+import { storiesOf } from '@storybook/react';
+import { useThrottleFn, useCounter } from '..';
+import ShowDocs from '../util/ShowDocs';
+
+const Demo = () => {
+ const [value, setValue] = React.useState('');
+ const throttledValue = useThrottleFn(value => value, 2000, [value]);
+ const [lastThrottledValue, setLastThrottledValue] = React.useState(throttledValue);
+ const [count, {inc}] = useCounter();
+
+ React.useEffect(() => {
+ if (lastThrottledValue !== throttledValue) {
+ setLastThrottledValue(throttledValue);
+ inc();
+ }
+ });
+
+ return (
+