什么是自定义hooks呢?
可以将组件逻辑提取到可重用的函数中的Hook。
import React,{ useState,useEffect } from 'react'
// 自定义hooks(屏幕的宽)
const useWidth=()=>{
const [width,setWidth]=useState(window.innerWidth)
const onResize=()=>{
setWidth(window.innerWidth)
}
useEffect(()=>{
window.addEventListener('resize',onResize)
return ()=>{
window.removeEventListener('resize',onResize)
}
},[])
return [width]
}
//自定义hooks(鼠标的位置)
const useMone=()=>{
const [xstate,setXstate]=useState(0)
const [ystate,setYstate]=useState(0)
const onMove=(MouseEvent)=>{
console.log(MouseEvent);
setXstate(MouseEvent.x)
setYstate(MouseEvent.y)
}
useEffect(()=>{
document.documentElement.addEventListener('mousemove',onMove)
// Document.documentElement 是一个会返回文档对象(document)的根元素的只读属性(如 HTML 文档的 <html> 元素)。
return ()=>{
document.documentElement.removeEventListener('mousemove',onMove)
}
},[])
return [xstate,ystate]
}
export default function Myhooks() {
const [width]=useWidth(0)//浏览器窗口的宽度
const [xstate,ystate]=useMone(0)
console.log(xstate,ystate);
return (
<div>
{width}
<hr/>
鼠标的位置:{xstate},{ystate}
</div>
)
}