跳到主要內容

反衝的環境

RecoilEnv

RecoilEnv 是包含反衝環境變數的物件,可以在該物件中讀取或設定這些變數。

  • RECOIL_DUPLICATE_ATOM_KEY_CHECKING_ENABLED: boolean - 在模組可能合法重新載入的環境中,例如 NextJS 或是在開發期間使用 React 的快速更新時,有用於停用重複原子/選擇器金鑰檢查。由於此操作會停用所有檢查(包含合法錯誤),因此請謹慎使用。

  • RECOIL_GKS_ENABLED: Set<string> - 反衝包含一組稱為閘門守衛 (GKs) 的不穩定行為變更內部旗標。這些旗標會在經過測試、改善和穩定之後,逐漸納入常規的反衝版本。如果您想嘗試新的實驗性功能,此變數允許您選擇其他旗標。

    若要啟用 GK,請在建立第一個 <RecoilRoot> 之前,將其新增至組中。

    RecoilEnv.RECOIL_GKS_ENABLED.add('recoil_transition_support');

    可用旗標的部分清單

    • recoil_hamt_2020 (預設啟用) - 將 Map<K, V> 實作切換為 雜湊陣列映射樹
    • recoil_sync_external_store預設啟用)- 如果使用的 React 版本提供了它,則啟用對 useSyncExternalStore() 的支援。
    • recoil_suppress_rerender_in_callback預設啟用)- 避免在選擇器值未變更時重新呈現元件,並透過參考相等性進行比較。
    • recoil_memory_managament_2020預設啟用)- 透過在原子定義中設定時,在沒有任何元件使用原子和選擇器時,自動釋放其內容,來實作資源回收。
    • recoil_transition_support - 預設啟用對 React 轉場效果useTransition() 的支援,而非需要使用 *_TRANSITION_SUPPORT_UNSTABLE() 掛鉤;優先於 recoil_sync_external_store

NodeJS

環境變數也能在 NodeJS 環境中初始化,例如 NextJs,透過設定 process.env。從 process.env 設定的變數會根據其資料類型進行解析

  • boolean - 可以是 truefalse,大小寫不敏感
  • Set<string> - 以空格或逗號分隔的字串清單,例如 a b ca,b,c,會分別新增至預設設定中的任何值(目前無法覆寫整個設定)