react 基础之自定义hooks (获取鼠标位置事件)

获取鼠标位置我们一般都是通过js事件获取,监听mousemove, 在每个页面中获取鼠标事件挺麻烦的,所以我们使用hooks, 简单封装一个react-hooks

js 复制代码
import { useCallback, useEffect, useState } from "react"

// 获取鼠标位置(自定义hooks)
function useMouse() {
    const [x, setX] = useState(0)
    const [y, setY] = useState(0)

    const mouseMoveHandler = useCallback((event: MouseEvent) => {
        setX(event.clientX)
        setY(event.clientY)
    }, [])

    useEffect(() => {
        window.addEventListener('mousemove', mouseMoveHandler)
        return () => {
            // 组件销毁时一定要解绑dom 事件,可能会出现内存泄露问题
            window.removeEventListener('mousemove', mouseMoveHandler)
        }
    })
    return { x, y }
}



// useEffect  会返回一个函数,这个返回函数代表的是组件销毁 可以做一些解绑操作
export default useMouse

使用方法:

js 复制代码
import useMouse from './hooks/useMouse';
 const { x, y } =  useMouse()

在上面的使用方法中x, y 表示的就是就是鼠标的位置

相关推荐
啊~哈8 分钟前
页面弹窗适配问题
前端·javascript·vue.js
工呈士15 分钟前
构建优化策略:Tree Shaking、代码分割与懒加载
前端·面试
骑自行车的码农20 分钟前
React Suspense实现原理深度解析 1
前端·react.js
还是一只小牛23 分钟前
探秘 React Native:线程探索及桥优化
android·前端
Face23 分钟前
Vue源码核心模块解析
前端·vue.js
Canmick24 分钟前
记一次无语的 Vite 构建配置问题排查
前端
FogLetter25 分钟前
从"乱炖"到"法式大餐":Promise如何优雅地管理异步流程
前端·javascript
鹘一26 分钟前
SSE实现deepseek流式输出
前端
xiaok26 分钟前
JavaScript同步与异步执行顺序解析
前端
GIS之路27 分钟前
OpenLayers 图层遮罩与裁剪
前端