安装
NPM
Recoil 包位于 npm。要安装最新稳定版本,请运行以下命令
npm install recoil
或者如果您使用的是 yarn
yarn add recoil
或者如果您使用的是 bower
bower install --save recoil
捆绑器
通过 NPM 安装的 Recoil 与模块捆绑器(如 Webpack 或 Rollup)完美搭配。
ES5 支持
Recoil 构建未转译为 ES5,我们不支持将 Recoil 与 ES5 一起使用。如果您需要支持未原生提供 ES6 功能的浏览器,您可以使用 Babel 编译您的代码,并使用预设 @babel/preset-env。但是,我们不支持这样做,您可能会遇到问题。特别是,与 React 一样,Recoil 依赖于 Map
和 Set
类型以及 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 install
或 yarn
"recoil": "facebookexperimental/Recoil.git#nightly",