Skip to content

Commit d714b12

Browse files
committed
feat: add useMouseWheel hook
1 parent 80af64b commit d714b12

File tree

5 files changed

+50
-0
lines changed

5 files changed

+50
-0
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@
5757
- [`useMediaDevices`](./docs/useMediaDevices.md) — tracks state of connected hardware devices.
5858
- [`useMotion`](./docs/useMotion.md) — tracks state of device's motion sensor.
5959
- [`useMouse` and `useMouseHovered`](./docs/useMouse.md) — tracks state of mouse position. [![][img-demo]](https://streamich.github.io/react-use/?path=/story/sensors-usemouse--docs)
60+
- [`useMouseWheel`](./docs/useMouse.md) — tracks deltaY of scrolled mouse wheel. [![][img-demo]](https://streamich.github.io/react-use/?path=/story/sensors-usemousewheel--docs)
6061
- [`useNetwork`](./docs/useNetwork.md) — tracks state of user's internet connection.
6162
- [`useOrientation`](./docs/useOrientation.md) — tracks state of device's screen orientation.
6263
- [`usePageLeave`](./docs/usePageLeave.md) — triggers when mouse leaves page boundaries.

docs/useMouseWheel.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
# `useMouseWheel`
2+
React Hook to get deltaY of mouse scrolled in window.
3+
4+
## Usage
5+
6+
```jsx
7+
import { useMouseWheel } from 'react-use';
8+
9+
const Demo = () => {
10+
const mouseWheel = useMouseWheel()
11+
return (
12+
<>
13+
<h3>delta Y Scrolled: {mouseWheel}</h3>
14+
</>
15+
);
16+
};
17+
```

src/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ export { default as useMount } from './useMount';
6060
export { default as useMountedState } from './useMountedState';
6161
export { default as useMouse } from './useMouse';
6262
export { default as useMouseHovered } from './useMouseHovered';
63+
export { default as useMouseWheel } from './useMouseWheel';
6364
export { default as useNetwork } from './useNetwork';
6465
export { default as useNumber } from './useNumber';
6566
export { default as useObservable } from './useObservable';

src/useMouseWheel.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import {useEffect, useState} from 'react'
2+
3+
export default () => {
4+
const [mouseWheelScrolled, setMouseWheelScrolled] = useState(0)
5+
useEffect(()=>{
6+
const updateScroll = (e : MouseWheelEvent) => {
7+
setMouseWheelScrolled(e.deltaY + mouseWheelScrolled)
8+
}
9+
window.addEventListener('wheel', updateScroll, false)
10+
return () => window.removeEventListener('wheel', updateScroll)
11+
})
12+
return mouseWheelScrolled
13+
}
14+

stories/useMouseWheel.story.tsx

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import { storiesOf } from '@storybook/react';
2+
import * as React from 'react';
3+
import { useMouseWheel } from '../src';
4+
import ShowDocs from './util/ShowDocs';
5+
6+
const Demo: React.FC<any> = () => {
7+
const mouseWheel = useMouseWheel()
8+
return (
9+
<>
10+
<h3>delta Y Scrolled: {mouseWheel}</h3>
11+
</>
12+
);
13+
};
14+
15+
storiesOf('Sensors|useMouseWheel', module)
16+
.add('Docs', () => <ShowDocs md={require('../docs/useMouseWheel.md')} />)
17+
.add('Demo', () => <Demo />);

0 commit comments

Comments
 (0)