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

相关推荐
雪芽蓝域zzs1 小时前
(六)打包优化 + Nginx 部署完整配置 + 项目收尾
前端·vue.js
研☆香1 小时前
聊一聊前端的常见字 关键字
开发语言·前端·javascript
东风破_2 小时前
JWT 1:从一个登录请求开始,理解 React 项目里的 API 层与 Mock
前端·后端
东风破_2 小时前
JWT 3:为什么 Token 要放进 Authorization?Axios 拦截器到底解决了什么?
前端·后端
东风破_2 小时前
JWT 5:路由守卫是什么?把整个 JWT 登录鉴权流程串起来
前端·后端
东风破_2 小时前
JWT 2:HTTP 是无状态的,为什么登录成功后还要给 Token?
前端·后端
东风破_2 小时前
JWT 4:Zustand 到底解决了什么?为什么登录状态要放进 Store?
前端·后端
IT_陈寒2 小时前
Vite动态导入差点让我秃头,原来问题出在这
前端·人工智能·后端
白泽_hunter3 小时前
项目里最常见的 5 个 this 指向坑:从规则到实战彻底讲透
前端
宿6743 小时前
vue3-pinia
前端·vue.js