跳至主要内容

Recoil 环境

RecoilEnv

RecoilEnv 是一个包含 Recoil 环境变量的对象,这些变量可以读取或设置。

  • RECOIL_DUPLICATE_ATOM_KEY_CHECKING_ENABLED: boolean - 在环境中禁用重复原子/选择器键检查很有用,在这些环境中,模块可能被合法地重新加载,例如 NextJS,或者在开发期间使用 React 的快速刷新。由于这会禁用所有检查,包括合法错误,请谨慎使用。

  • RECOIL_GKS_ENABLED: Set<string> - Recoil 包含一组不稳定的行为改变内部标志,称为守门员 (GK)。这些标志在测试、改进和稳定后逐渐整合到常规的 Recoil 版本中。此变量允许您选择加入更多标志,如果您想尝试新的实验性功能。

    要启用 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,分别添加到集合中默认存在的任何值(目前无法覆盖整个集合)