歡迎使用 Recoil 版本 0.1.1!此版本有性能改進,並新增了幾個實驗性功能,例如:支援 React Native、在 React 之外使用快照,以及管理原子副作用(例如記錄、外部儲存同步、持久化等)的原子效果。
另外,現在可透過nightly
分支使用夜間組建。
性能
多項變更可改善 Recoil 效能
- 現在會批次處理在
useRecoilCallback()
中執行的更新,這樣便能避免複製資料結構或執行中間狀態的更新。這讓我們能夠在一趟迴圈中設定 5,000 個原子,我們的某些壓力測試執行的時間從 10 秒縮減至 25 毫秒。(@davidmccabe) - 如果選擇器的依賴關係未變更,Recoil 現在也能避免在快取中查看選擇器值。這讓某些擁有複雜資料流程圖的應用程式速度提升了 30 至 40 倍。(@davidmccabe)
React Native(實驗性)
反作用力現在應可與 React 原生環境搭配使用。不過,這與伺服器端呈現類似,無獲得官方支援。(#114 - @jacques-blom,@mondaychen)
Atom Effects (實驗性)
Atoms 的效果可簡化依照每個原子管理原子副作用政策的程序,而這屬於 atom()
或 atomFamily()
定義的一部分。可將效果用於各種有趣的應用程式中,例如 記錄,或是與外部儲存體(例如 遠端資料庫、本地端儲存體、瀏覽器網址歷程等)同步或持續保存狀態。舉例來說,你可以將 atom 當作使用者的部分狀態,並提供效果來訂閱伺服器上的變更,以更新本地端副本,同時也可讓本地端變更直接寫入並更新伺服器。(#680,#380,#381,#384,#385,#448,#449,#412,#591,#634,#682— @drarmstr,@csantos4242)
針對測試的快照 (實驗性)
現在可 於 React 環境之外建立快照。這可能有助於在 React 環境之外進行 測試 或評估選取器。(#649— @drarmstr,@habond)
錯誤修正
- 此更新包含各種針對測試和基礎架構的錯誤修正。(#555、#587、#588、#590、#635、#631、#683、#684、#686— @aaronabramov、@mondaychen、@drarmstr、@mallchel、@davidmccabe、@csantos4242)
- 請勿凍結不應凍結的物件。(#597、#633、#672— @RinGoku、@a-sane)
Snapshot
的 TypeScript 輸入。(#687— @kevinfrei、@drarmstr、@habond)- 針對
waitForAll()
同時處理作業進行更多測試。(#681— @drarmstr)
後續工作
在後續版本中,Recoil 將會自動釋放不再使用的 atom 和 selector 所使用的記憶體,對於大量 atom 的情況將會有更好的效能。(@davidmccabe)
釋出我們的 Chrome 開發人員工具原型。(@maxijb)
針對一般狀態持續性的效果函式庫,例如瀏覽器本地儲存空間或網址記錄。(@bezi)
感謝您持續對 Recoil 給予關注!