网站首页 > 技术文章 正文
大家好,很高兴又见面了,我是"高级前端进阶",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发,您的支持是我不断创作的动力。
什么是 rooks
Essential React custom hooks to super charge your components!
rooks 是一系列必备的 React 自定义钩子,用于极大提升开发者日常编码效率。支持以下优秀的 hooks:
- 动画和时间:支持 5 个钩子,包括:useIntervalWhen、useLockBodyScroll、useRaf、useResizeObserverRef、useTimeoutWhen 等
- 浏览器 API :支持 9 个钩子,包括:useGeolocation、
useIdleDetectionApi 、useNavigatorLanguage 、useOnline、useOrientation 、useScreenDetailsApi、
useWebLocksApi 、useSpeech 、useVibrate 等 - 事件相关 :支持 15 个钩子,包括:useDocumentEventListener 、useDocumentVisibilityState、useFocus、useFocusWithin 、useIsDroppingFiles 、useOnClickRef、useOnHoverRef 、useOnLongHover 、useOnLongPress 、useOnStartTyping 、useOnWindowResize、useOnWindowScroll 、useOutsideClick 、useOutsideClickRef 、seWindowEventListener 等等
- 其他优秀 hooks:生命周期和 Effect 相关的 9 个钩子、鼠标和触摸的 3 个 Hooks、状态管理的 18 个 hooks、状态历史额 4 个 hooks 等等。
rooks 的典型特征可以概括为:
- 收集 97 个独立模块钩子
- 独立软件包,所有钩子均集中于一处
- 支持 CommonJS、UMD 和 ESM
目前 rooks 在 Github 通过 MIT 协议开源,有超过 3.3k 的 star,是一个值得尝试的前端开源项目。
如何使用 rooks
首先安装相应依赖:
// 安装 npm i -s rooks
import { useDidMount } from "rooks";
下面是基础使用方法:
function App() {
useDidMount(() => {
alert("mounted");
});
return (
<div className="App">
<h1>Hello CodeSandbox</h1>
<h2>Start editing to see some magic happen!</h2>
</div>
);
}
下面的示例表示当条件成立时立即设置 setInterval:
import { useIntervalWhen } from "rooks";
import { useState } from "react";
function App() {
const [value, setValue] = useState(0);
const [when, setWhen] = useState(false);
useIntervalWhen(
() => {
setValue(value + 1);
},
1000, // run callback every 1 second
when // start the timer when it's true
);
return (
<div
style={{ display: "flex", flexDirection: "column", alignItems: "center" }}
>
<h1>Rooks: useIntervalWhen example</h1>
<h2>Value: {value}</h2>
<button onClick={() => setWhen(true)}> Start interval </button>
</div>
);
}
export default App;
下面示例表示立即触发回调,不等待第一个间隔完成:
import { useIntervalWhen } from "rooks";
import { useState } from "react";
function App() {
const [value, setValue] = useState(0);
const [when, setWhen] = useState(false);
useIntervalWhen(
() => {
setValue(value + 1);
},
1000, // run callback every 1 second
when, // start the timer when it's true
true // no need to wait for the first interval
);
return (
<div
style={{ display: "flex", flexDirection: "column", alignItems: "center" }}
>
<h1>Rooks: useIntervalWhen example</h1>
<p>
Notice how the first increment is instantly after interval is enabled.
If n intervals run, the callback fires n+1 times.
</p>
<h2>Value: {value}</h2>
<button onClick={() => setWhen(true)}> Start interval </button>
</div>
);
}
export default App;
更多关于 rooks 的用法和示例可以参考文末资料,本文不再过多展开。
参考资料
https://github.com/imbhargav5/rooks
https://rooks.vercel.app/docs
猜你喜欢
- 2025-10-13 yt-dlp前端应用程序,网络视频和音频下载工具
- 2025-10-13 Kombai:真正理解前端的AI工具_ko前端框架
- 2025-10-13 再见 Cursor,从0到1用上Claude Code后,惊呼这才是生产力工具|保姆级教程
- 2025-10-13 前端开发构建工具生态都有哪些_前端构建工具深度剖析
- 2025-10-13 我最喜欢的前端工具:开发者的现代 Web 开发宝库
- 2025-01-08 「前端开发工具分享·建议收藏」JavaScript 随机生成唯一ID
- 2025-01-08 Web前端培训:3个主流的前端包管理工具
- 2025-01-08 一键部署 K8S 环境,10分钟玩转,这款开源神器实在太香了
- 2025-01-08 用上这 7 个 Python 工具,提升开发幸福感
- 2025-01-08 一篇文章介绍清楚前端可视化开发工具
你 发表评论:
欢迎- 最近发表
-
- Three.js vs Unity:工业可视化为何选择Web方案?
- 一款全新Redis UI可视化管理工具,支持WebUI和桌面——P3X Redis UI
- 时间线可视化实战:三款AI工具实测,手把手教你制作人生轨迹图
- 【推荐】一款可视化在线 Web 定时任务管理平台,支持秒级任务设置
- 重磅更新!FastDatasets 推出可视化 Web 界面
- 模具设计之UG钣金实例教程(3)_ug钣金基础教程
- 前端基于 RBAC 模型的权限管理实现
- 别再把JWT存在localStorage里了!2025年前端鉴权新思路
- 模具设计之曲面造型中不圆润的曲面如何处理技巧
- 9个专业级别的CSS技巧区分了解和精通的鸿沟
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- Oracle RAC (76)
- oracle恢复 (77)
- oracle 删除表 (52)
- oracle 用户名 (80)
- oracle 工具 (55)
- oracle 内存 (55)
- oracle 导出表 (62)
- oracle约束 (54)
- oracle 中文 (51)
- oracle链接 (54)
- oracle的函数 (58)
- oracle面试 (55)
- 前端调试 (52)
本文暂时没有评论,来添加一个吧(●'◡'●)