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

相关推荐
前端卧龙人几秒前
别再重复造轮子,VueUse让前端开发更简单、更高效
前端
前端卧龙人几秒前
前端埋点与监控的核心要点
前端
前端大雄几秒前
前端面试之各大厂真题算法解析
前端·javascript·面试
银之夏雪丶1 分钟前
Vue 3 vs Vue 2:深入解析从性能优化到源码层面的进化
前端·vue.js
前端日常开发2 分钟前
一篇文章带你搞懂NextTick 是宏任务还是微任务
前端
EamonYang3 分钟前
实现 miniReact
前端
前端日常开发4 分钟前
5 分钟搞懂JavaScript 原型链
前端
野生的程序媛5 分钟前
重生之我在学Vue--第7天 Vue 3 数据请求(Axios)
前端·javascript·vue.js
cv高级工程师YKY6 分钟前
前端 - uniapp - - 滚动容器scroll-view实现横向滚动
前端·uni-app
程序媛刘刘9 分钟前
uniappx 使用体验
java·服务器·前端