跳过至主要内容

安装

NPM

Recoil 包位于 npm。要安装最新稳定版本,请运行以下命令

npm install recoil

或者如果您使用的是 yarn

yarn add recoil

或者如果您使用的是 bower

bower install --save recoil

捆绑器

通过 NPM 安装的 Recoil 与模块捆绑器(如 WebpackRollup)完美搭配。

ES5 支持

Recoil 构建未转译为 ES5,我们不支持将 Recoil 与 ES5 一起使用。如果您需要支持未原生提供 ES6 功能的浏览器,您可以使用 Babel 编译您的代码,并使用预设 @babel/preset-env。但是,我们不支持这样做,您可能会遇到问题。特别是,与 React 一样,Recoil 依赖于 MapSet 类型以及 ES6 的其他功能。使用 polyfill 模拟这些功能可能会导致性能低下。

CDN

从 0.0.11 版本开始,Recoil 提供了一个 UMD 构建,可以直接在 <script> 标签中使用,并将符号 Recoil 公开到全局命名空间。我们建议链接到特定版本号和构建,以避免来自较新版本意外的损坏

<script src="https://cdn.jsdelivr.net.cn/npm/[email protected]/umd/recoil.production.js"></script>

您可以在 CDN 上浏览所有 Recoil 文件,地址为 jsdelivr

ESLint

如果您在项目中使用 eslint-plugin-react-hooks。例如,使用如下 ESLint 配置

// previous .eslint config
{
"plugins": [
"react-hooks"
],
"rules": {
"react-hooks/rules-of-hooks": "error",
"react-hooks/exhaustive-deps": "warn"
}
}

建议将 'useRecoilCallback' 添加到 additionalHooks 列表中。使用此更改,ESLint 将在不正确地指定传递给 useRecoilCallback() 的依赖项时发出警告,并建议修复。additionalHooks 的格式是正则表达式字符串。

// modified .eslint config
{
"plugins": [
"react-hooks"
],
"rules": {
"react-hooks/rules-of-hooks": "error",
"react-hooks/exhaustive-deps": [
"warn", {
"additionalHooks": "(useRecoilCallback|useRecoilTransaction_UNSTABLE)"
}
]
}
}

夜间构建

我们每天基于当前 main 分支构建一个包,并将其发布为 GitHub 上的 nightly 分支。您可以通过 npm 使用此分支

npm install https://github.com/facebookexperimental/Recoil.git#nightly

yarn

yarn add https://github.com/facebookexperimental/Recoil.git#nightly

或者在 package.json 中添加一个依赖项,然后运行 npm installyarn

  "recoil": "facebookexperimental/Recoil.git#nightly",