A state container which provides a performant interface for tracking the position of the mouse as it moves around the screen - perfect for UX analytic tracking and also in-browser gaming.
yarn add @render-props/mouse-position
or npm i @render-props/mouse-position
import MousePosition from '@render-props/mouse-position'
const MousePositionDiv = props => (
<MousePosition enterDelay={500} leaveDelay={200}>
{
({
mouseRef,
canMove,
pageX,
pageY,
clientX,
clientY,
screenX,
screenY,
elementX,
elementY,
isOver,
}) => (
<div ref={mouseRef}>
Is over?: {JSON.stringify(isOver)}
Element position X: {elementX}
Element position Y: {elementY}
</div>
)
}
</MousePosition>
)
enterDelay {number}
- the amount of time to wait before declaring that an element is being hovered and we should therefore track move events
leaveDelay {number}
- the amount of time to wait before declaring that an element is no longer being hovered and we should not continue monitoring move events
initialValue {bool}
- the initial
isHovering
value to initiate the component with
- the initial
onMove {function}
- a callback which fires each time the mouse move event updates the state of
the component. Accepts two arguments
(state, event)
.
- a callback which fires each time the mouse move event updates the state of
the component. Accepts two arguments
onLeave {function}
- a callback which fires when the mouse leaves its ref'd element.
Accepts one argument argument for
(event)
.
- a callback which fires when the mouse leaves its ref'd element.
Accepts one argument argument for
mouseRef
- This
ref
must be provided to whatever element you are trying to observe the the mouse movements of. e.g.<div ref={mouseRef}>
- This
pageX {integer}
- mouse position relative to the left edge of the document,
null
if mouse is not over the element
- mouse position relative to the left edge of the document,
pageY {integer}
- mouse position relative to the top edge of the document,
null
if mouse is not over the element
- mouse position relative to the top edge of the document,
clientX {integer}
- mouse position relative to the left edge of the client,
null
if mouse is not over the element
- mouse position relative to the left edge of the client,
clientY {integer}
- mouse position relative to the top edge of the client,
null
if mouse is not over the element
- mouse position relative to the top edge of the client,
screenX {integer}
- mouse position relative to the left edge of the screen,
null
if mouse is not over the element
- mouse position relative to the left edge of the screen,
screenY {integer}
- mouse position relative to the top edge of the screen,
null
if mouse is not over the element
- mouse position relative to the top edge of the screen,
elementX {integer}
- mouse position relative to the left edge of the ref'd element,
null
if mouse is not over the element
- mouse position relative to the left edge of the ref'd element,
elementY {integer}
- mouse position relative to the top edge of the ref'd element,
null
if mouse is not over the element
- mouse position relative to the top edge of the ref'd element,
elementWidth {integer}
offsetWidth
of the ref'd element,null
if mouse is not over the element
elementHeight {integer}
offsetHeight
of the ref'd element,null
if mouse is not over the element
isOver {bool}
true
if the mouse is over the ref'd element