自定义Hooks函数
自定义Hooks 函数 和 用Hooks 创建组件很相似,跟我们平时用 JavaScript 写函数几乎一模一样,可能就是多了些 React Hooks 的特性,自定义 Hooks 函数偏向于功能,而组件偏向于界面和业务逻辑。
自定义Hooks 函数获取窗口大小
import React,{useState,useEffect,useCallback} from 'react'
function useWinSize(){
const [size,setSize] = useState({ //先用useState设置size状态
width:document.documentElement.clientWidth,
height:document.documentElement.clientHeight
})
//编写一个每次修改状态的方法 onResize
const onResize = useCallback( //使用callback,目的是为了缓存方法(useMemo是为了缓存变量)
() => {
setSize({
width:document.documentElement.clientWidth,
height:document.documentElement.clientHeight
})
},
[],
)
//在第一次进入方法时使用useEffect 来注册 resize 监听事件
useEffect(() => {
window.addEventListener('resize:',onResize)
return () => {
window.removeEventListener('resize:',onResize) //为了防止一直监听,在方法移除时,使用return 的方式移除监听
}
}, [])
return size; //最后返回size变量
}
//编写组件并使用自定义函数
function HWinsize(){
const size=useWinSize()
return(
<div>
页面size:{size.width} x {size.height}
</div>
)
}
export default HWinsize;
在浏览器中预览一下结果,可以看到当我们放大缩小浏览器窗口时,页面上的结果都会跟着变化。

浙公网安备 33010602011771号