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

相关推荐
1-1=08 分钟前
ExtJS 快速入门—— 面板 详细版
前端·jquery
前端攻城狮Qwen9 分钟前
Service Worker在电子菜单中的实际应用
前端
前端Hardy12 分钟前
NW.js v0.109.1 最新稳定版发布:被遗忘的桌面开发神器?启动快 3 倍,内存省 70%!
前端·javascript·vue.js
Kath16 分钟前
[归档][2022-05-16]opensumi看码记录
前端
清风徐来QCQ24 分钟前
跨域问题(CORS-Cross-Origin Resource Sharing跨域资源共享)
前端
DanCheOo25 分钟前
我写了一个 AI 代码质量流水线,一行命令搞定 Review + 修复 + 测试 + 报告
前端·ai编程
yaaakaaang31 分钟前
(六)前端,如此简单!--- 三类通讯
前端
Jinuss1 小时前
源码分析之React中副作用Effect全流程
前端·javascript·react.js
踩着两条虫1 小时前
VTJ.PRO 在线应用开发平台的低代码引擎与DSL系统
前端·低代码·ai编程
Yiyaoshujuku1 小时前
医院API接口,从医院真实世界数据HIS、LJS、EMR、PACS系统到医院药品流向数据....
大数据·前端·人工智能