React 19
一次渲染只是草稿。React 可能暂停它、重跑它,甚至直接丢弃它。Better Hooks 会等到 commit 之后,再把值和浏览器任务当成已经生效的事实。
渲染只是草稿
useLatest 和 usePrevious 在 Effect 中发布数据,因此读到的是已经提交的值,不是 React 放弃的某次渲染结果。当定时器、监听器或 Promise 回调比创建它的那次渲染活得更久时,这一点很重要。
操作函数稳定,回调保持新鲜
如果文档说明某个操作函数引用稳定,它就不会因为组件再次渲染而变化。长生命周期任务可以一直持有这个操作函数,同时调用最近一次已经提交的回调,既避开过期闭包,也不用反复重建订阅。
清理也是功能的一部分
Strict Mode 在开发环境中可能重放 Effect。建立和清理必须成对出现:移除监听器、取消定时器、断开 Observer,并让旧任务失效。重放结束后,页面中存活的原生任务应当和普通挂载一致。
错误不会凭空消失
onError 可以观察失败,但不会把失败变成成功。原始抛出或 Promise 拒绝仍由应用处理。只有文档明确说明时,已经取消或被新任务取代的工作才会被忽略。
React 已经合适时就直接用 React
useTransition、useDeferredValue、useOptimistic、useActionState 和 use 继续直接使用。Better Hooks 补的是生命周期空隙,不会为了换名字而包一层 React API。
支持版本
当前 peer dependency 为 react >=19.0.0 <20.0.0。只有包配置和测试都完成更新后,文档才会扩大这个范围。