由Poimandres团队维护的React原子状态管理库Jotai发布v3.0.0稳定版。团队将其描述为“一个仅支持ESM的现代化包,既没有破坏性变更,也没有新增API”,发布页面则称其为“一个基本向后兼容的更新,移除了部分旧版支持和已弃用的API”。
v3完全放弃CommonJS构建方式,仅以ES模块形式发布,同时移除对UMD和SystemJS打包格式的支持,并放弃对旧版Node、React和TypeScript的支持以及jotai/babel插件。该包转为采用“模块优先”结构,支持ES2020,直接读取NODE_ENV变量而非使用构建时替换,并将Rollup更换为其他构建工具。维护者Daishi Kato长期记录同时发布CJS和ESM版本带来的双包风险,仅支持ESM的立场可视为这项工作的最终结论,其成果是核心代码更精简、维护工作量相应减少。
所谓“无破坏性变更”带有保留条款:atomFamily、loadable以及atom读取函数中的setSelf参数已被移除,但这些功能在v2后期版本中早已标记为弃用,遵循警告的团队应能顺利升级。atomFamily已移至专用的jotai-family包,API与原版完全一致,并新增atomTree辅助函数,只需替换一次导入;loadable用户则被引导使用jotai-eager,v3迁移指南记录了完整迁移路径。仍通过CommonJS导入或依赖已移除打包格式的项目,最可能感受到变化。
在讨论帖中,有用户对移除setSelf提出异议,认为乐观的atomWithStorageWhileRevalidate模式将失去合适替代方案;也有人请求实现一等公民级的默认存储生命周期,以便测试重置状态而无需调用内部API。Kato确认,新功能和更深层次的破坏性变更被有意排除在3.0之外,并发安全的原子操作和外部存储同步将推迟到后续v3.x版本或未来的v4版本。
Facebook的Recoil曾让“原子”概念广为人知,如今该项目被普遍认为已经过时,Jotai成为原子模型事实上的继任者;同属Poimandres团队的Zustand则占据以存储为中心的市场。通过将3.0定位为清理而非重构,团队押注一个更小、更现代化且原生支持ESM的核心。Jotai通过“原子”小单元构建状态并组合成依赖图,仅在值实际变化时触发渲染更新,且不强制特定实现方案,可在React外部运行。
扫码查看视频号
咨询
咨询