// 创建自定义 hook,实现鼠标位置状态逻辑复用
const useMouse = () => {
const [position, setPosition] = useState({ x: 0, y: 0 })
useEffect(() => {
const onMouseMove = e => {
const { pageX, pageY } = e
setPosition({
x: pageX,
y: pageY
})
}
window.addEventListener('mousemove', onMouseMove)
return () => window.removeEventListener('mousemove', onMouseMove)
}, [])
return position
}
// 复用:
const Cat = () => {
const { x, y } = useMouse()
return (
<img
src={catImg}
style={{
position: 'absolute',
top: y,
left: x
}}
alt=""
/>
)
}
const Position = () => {
const { x, y } = useMouse()
return (
<div>鼠标当前位置:(x: {x}, y: {y})</div>
)
}
在react中封装一个简单的自定义hook
最新推荐文章于 2024-05-06 15:36:20 发布