Skip to content

自定义hook

自定义hook是一个函数,函数内部可调用其他hook函数,且以use开头命名。主要作用是对逻辑功能 进行封装处理,达到一种复用能力。

1. 需求

实现一个实时获取鼠标坐标的自定义Hook

2. 代码实现

jsx
import { useEffect, useState } from 'react'

function useMouse() {
  const [pos, setPos] = useState({
    pageX: NaN,
    pageY: NaN
  })
  function mouse(e) {
    setPos({...pos, pageX: e.pageX, pageY: e.pageY})
    return pos
  }
  useEffect(() => {
    document.addEventListener('mousemove', mouse)
    return (()=>{
      document.removeEventListener('mousemove', mouse)
    })
  })
  return pos
}

function App() {
  // 使用自定义hooks
  const mouse = useMouse()
  return (
    <>
      hello App
      <br />
      <br />
      {mouse.pageX}, {mouse.pageY}
    </>
  )
}
export default App

运行效果:
Alt text