usehooks 的钩子函数概览
以下是正式发布的 hooks 列表,实验性的不在里面
安装: npm i @uidotdev/usehooks
官网: usehooks.com/
设备强相关:
- useBattery 获取电池电量,充电状态
- useGeolocation 访问用户的地理位置,调起授权,获取授权状态
- useIsClient 检测代码运行在服务器端还是客户端
- useMediaQuery 媒体查询,判断设备是否是某种尺寸
- useNetworkState 监听网络状态,比如断网,下载速率,几 G 网
- useOrientation 获取设备方向,横竖屏,倾斜角度
鼠标事件相关:
- useClickAway 检测用户点击位置是否脱离目标区域
- useHover 获取元素是否被 hover 的状态
- useIdle 检测当前区域内,是否有用户活动,比如鼠标活动
- useMouse 监听鼠标光标的位置,相对父元素的位置,以及相对目标元素的位置
- useLongPress 检测是否是长按操作,移动端比较实用
可见状态相关
- useIntersectionObserver 检测元素是否在视觉区域内
- useVisibilityChange 监听 tab 页面是否在可见范围,切换浏览器 tab 会变化
监听宽高
- useMeasure 获取目标元素的动态宽度和高度
- useWindowSize 监听 window 尺寸,宽高
滚动相关
- useLockBodyScroll 临时性的,打开某个页面,触发关闭 body 的滚动,关闭即恢复
- useWindowScroll 监听组件的滚动位置,x,y,scrollTo
storage 相关:
- useSessionStorage 对 sessionStorage 的数据管理,set 和 get
- useLocalStorage 对 localStorage 的数据,set 和 get
render 信息相关
- useRenderCount 获取组件渲染的次数
- useRenderInfo 获取组件渲染信息,次数,渲染时间间隔等
- useIsFirstRender 获取渲染状态,是否是第一次渲染
小轮子实现:
- useThrottle 节流:一段时间内,只执行一次函数,避免频繁触发
- useToggle 开关管理,true 和 false 切换
- useCopyToClipboard 复制文本到剪切板
- useCounter 数字加减管理器,可以设置范围
- useDebounce 防抖:延迟执行某个函数,或者更新某个值
- useHistoryState 管理 state 的历史状态,undo,redo
数据类型管理:
- useList 管理 list 数据,尤其是对某行数据增删改查,有快捷方式
- useMap 二维 map 格式的数据管理,可以根据 key 增删改查, [["sam",16],["lee",18]]
- useQueue 队列数据管理,先进先出
- useSet 管理 set 数据,增删改查
- useObjectState 复杂对象数据增删改查管理,更便捷
数据变化监听
- useDefault 默认值管理
- usePrevious 存储变量的上一个值
不知道怎么分类
- usePreferredLanguage 获取用户首选语言
- useDocumentTitle 动态更改页面 head 里面的 title 标签值
- useFavicon 动态更新页面的 favicon 图片
- useScript 动态加载 js 文件