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

相关推荐
chxii7 小时前
在 IIS 中实现 SSL 证书的自动续期
前端
周星星日记7 小时前
vue3中静态提升和patchflag实现
前端·vue.js·面试
橘子编程7 小时前
React 19 全栈开发实战指南
前端·react.js·前端框架
DanCheOo7 小时前
AI Streaming 架构:从浏览器到服务端的全链路流式设计
前端·agent
我是小趴菜7 小时前
前端如何让图片、视频、pdf等文件在浏览器直接下载而非预览
前端
cg337 小时前
开源项目自动化:用 GitHub Actions 让每个 Issue 都被温柔以待
前端
haierccc8 小时前
Win7、2008R2、Win10、Win11使用FLASH的方法
前端·javascript·html
We་ct8 小时前
LeetCode 50. Pow(x, n):从暴力法到快速幂的优化之路
开发语言·前端·javascript·算法·leetcode·typescript·
柠檬味的Cat8 小时前
使用腾讯云COS作为WordPress图床的实践
前端·github·腾讯云
Hilaku8 小时前
卷AI、卷算法、2026 年的前端工程师到底在卷什么?
前端·javascript·面试