useMouse

用于跟踪鼠标位置的 React Hook。

演示

尝试滚动页面或移动您的鼠标来观察不同类型之间的差异。

源码
Type: page (default):
(0, 0, null)
Type: client:
(0, 0, null)
Type: screen:
(0, 0, null)
Type: movement (useful when pointer locked):
(0, 0)
isActive:
true

用法

请查看 API。

源码

点击下方链接跳转 GitHub 查看源代码。

API

const { x, y, position, sourceType, stop } = useMouse(options)

选项 Options

export type UseMouseOptions = {
  /**
   * 用于从事件中提取的坐标类型。
   *
   * @defaultValue 'page'
   */
  type?: UseMouseCoordType | UseMouseEventExtractor
  /**
   * 目标元素以便附加事件监听器。
   *
   * @defaultValue window
   */
  target?: Window | EventTarget | null | undefined
  /**
   * 是否启用触摸事件。
   *
   * @defaultValue true
   */
  touch?: boolean
  /**
   * 是否启用滚动事件。
   *
   * @defaultValue true
   */
  scroll?: boolean
  /**
   * 触摸结束时是否重置位置。
   *
   * @defaultValue false
   */
  resetOnTouchEnds?: boolean
  /**
   * 初始位置。
   *
   * @defaultValue { x: 0, y: 0 }
   */
  initialValue?: Position
  /**
   * 是否立即开始更新位置。
   *
   * @defaultValue false
   */
  immediate?: boolean
}

返回值

返回值中包含可暂停、恢复的 Pausable 实例。

更多详情,请参见 Pausable

export type Position = {
  /**
   * X 坐标
   */
  x: number
  /**
   * Y 坐标
   */
  y: number
}

export type UseMouseReturns = Position &
  Pausable & {
    /**
     * 鼠标事件的位置。
     */
    position: Position
    /**
     * 事件的来源类型。
     */
    sourceType: UseMouseSourceType
    /**
     * 立即停止鼠标事件监听器。
     */
    stop(): void
  }