介绍
React 已经负责状态和 Effect。Better Hooks 接手周边那些看似不大、却很容易留下问题的工作:取消定时器、移除监听器、处理服务端无法得知的浏览器状态,以及丢弃已经过期的异步结果。
一个 Hook 只做一件事
每个入口都保持小而明确。切换状态用 useToggle,等待输入稳定用 useDebounce,读取联网状态用 useOnline,响应用户复制操作用 useCopyToClipboard。剩下的组件代码还是普通 React。
Hook 会替你处理的事
- 仅仅导入模块,不会启动浏览器任务。
- 输入变化或组件卸载时,定时器、监听器、订阅和待处理任务都会被清理。
- 对于有此约定的 Hook,长生命周期回调会读到最近一次已经提交的值。
- 每个公开 Hook 都有带类型的独立入口,也可以从根入口导入。
从一个小功能开始
跟着开始使用写一个客户端组件,再到 Hook 索引按实际需求搜索。组件需要服务端渲染时,使用浏览器状态前先看一遍 SSR 与 RSC。
它不负责什么
Better Hooks 是无样式的工具库,不提供 UI 组件、请求缓存或状态容器,也不会给 React 已经好用的 API 换个名字再包装一次。