我们很高兴宣布发布 Recoil 0.3,它带来了更灵活的 RecoilRoot 嵌套、回调生成、内存管理准备、优化和错误修复。
新功能
- 您现在可以创建一个 RecoilRoot,如果存在周围的根,它将贯穿到周围的根。这使您可以创建可重用组件,这些组件使用 Recoil,但可以在更大 Recoil 应用程序的上下文中使用或不使用。(#973)
- 您现在可以从选择器中返回 Recoil 回调。(#989)
重大变更:准备内存管理
Recoil 的下一个版本将有一个重大 API 变更。今天的版本在开发版本中发出了一个控制台警告,如果您有任何需要更新的代码。大多数应用程序不需要任何代码更改。
当我们发布内存管理时,快照(例如您作为 useRecoilCallback()
的参数获得的快照)仅在创建它们的时钟周期内有效。如果您想将快照保留更长时间,您需要手动保留并释放它。
const release = snapshot.retain();
try {
await someAsyncWork(snapshot);
} finally {
release();
}
在 0.3.0 中,如果您使用未保留的快照,您将在开发中收到控制台警告。生产环境中的行为没有变化。在下一个版本中,它将在开发和生产环境中都抛出异常。
应尽可能避免保留快照,因为这将阻止在保留该快照的整个时间内为所有原子回收内存。相反,在转到异步之前,请先提取所需的特定值。