useMouse

Track mouse position relative to an element or document.

Import

import { useMouse } from '@tidbcloud/uikit'

Usage

import { useMouse } from '@tidbcloud/uikit'
import { Box, Text } from '@tidbcloud/uikit'
 
function Demo() {
  const { ref, x, y } = useMouse()
 
  return (
    <Box ref={ref} p="xl" style={{ height: 200 }}>
      <Text>
        Mouse position: {x}, {y}
      </Text>
    </Box>
  )
}

Document Tracking

If you do not provide ref, mouse position is tracked relative to the document element:

import { useMouse } from '@tidbcloud/uikit'
 
function Demo() {
  const { x, y } = useMouse()
 
  return (
    <div>
      Document mouse position: {x}, {y}
    </div>
  )
}

Reset on Exit

Set resetOnExit option to reset mouse position to 0, 0 when mouse leaves the element:

import { useMouse } from '@tidbcloud/uikit'
 
const { ref, x, y } = useMouse({ resetOnExit: true })

Definition

function useMouse<T extends HTMLElement = any>(options?: {
  resetOnExit?: boolean
}): {
  x: number
  y: number
  ref: React.RefObject<T>
}