我們很榮幸宣布 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 中,如果您使用了一個未被保留的快照,您將會在開發中看到主控台警告。這並未改變製作環境中的行為。在下一版本中,無論是在開發或製作環境中,這將會引發一個例外。
盡可能避免保留快照,因為只要保留該快照,便無法回收所有原子中的記憶體。相反地,在切換到非同步之前,擷取您需要的數值即可。