Skip to main content

Recoil 0.3

· One min read

我们很高兴地宣布 Recoil 0.3 的发布,它具有更灵活的 RecoilRoot 嵌套,回调生成,内存管理的准备、优化及错误修复。

新特性#

  • 现在,你可以创建一个 RecoilRoot,如果本身已存在 RecoilRoot 的话,它可以落其外层的 root 上。这使得你可以创建可复用的 Recoil 组件,可以应用在 Recoil 比较大的应用程序中,当然也可以选择不使用。(#973)
  • 你现在可以从 selector 中返回 Recoil 的回调。(#989)

重大更新:为内存管理做准备#

Recoil 的下一个版本将有巨大的的 API 变化。如果你的代码有需要更新的部分,升级到该版本时,会在开发构建中发出一个控制台警告;大多数应用不需要修改代码。

当我们发布内存管理时,快照 (比如你作为 useRecoilCallback() 的参数得到的快照) 将只在它们被创建的时间段内有效。如果你想把快照保留更长的时间,你需要手动保留,然后释放它。

const release = snapshot.retain();try {  await someAsyncWork(snapshot);} finally {  release();}

在 0.3.0 中,如果你使用一个没有被保留的快照,你会在开发中得到一个控制台警告。在生产中的行为没有变化。在下一个版本中,它将会抛出一个异常,无论是在开发还是生产中。

应该尽可能避免保留快照,因为只要快照被保留,就会阻止所有 atom 的内存回收。相反,在进入异步之前,只提取你需要的值。

错误修复、性能和其他改进#