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 表示的就是就是鼠标的位置

相关推荐
中微子10 分钟前
React状态管理最佳实践
前端
烛阴20 分钟前
void 0 的奥秘:解锁 JavaScript 中 undefined 的正确打开方式
前端·javascript
中微子27 分钟前
JavaScript 事件与 React 合成事件完全指南:从入门到精通
前端
Hexene...36 分钟前
【前端Vue】如何实现echarts图表根据父元素宽度自适应大小
前端·vue.js·echarts
天天扭码1 小时前
《很全面的前端面试题》——HTML篇
前端·面试·html
xw51 小时前
我犯了错,我于是为我的uni-app项目引入环境标志
前端·uni-app
!win !1 小时前
被老板怼后,我为uni-app项目引入环境标志
前端·小程序·uni-app
Burt1 小时前
tsdown vs tsup, 豆包回答一坨屎,还是google AI厉害
前端
群联云防护小杜2 小时前
构建分布式高防架构实现业务零中断
前端·网络·分布式·tcp/ip·安全·游戏·架构
ohMyGod_1233 小时前
React16,17,18,19新特性更新对比
前端·javascript·react.js