写点什么

Recoil:面向 React 的新的状态管理库

  • 2020-06-02
  • 本文字数:853 字

    阅读完需:约 3 分钟

Recoil:面向React的新的状态管理库

Recoil是 Facebook 推出的一个全新的、实验性的 JavaScript 状态管理库,它解决了使用现有 Context API 在构建较大应用时所面临的很多问题。


因为 React 主要是一个 UI 库,开发人员通常会在使用 React 的同时使用一个状态管理方案以简化数据的处理。


很多现有的状态管理方案都是基于 React 在 2014 年引入的 Flux 架构的。然而,尽管像 Redux 和 MobX 这样的库能够确保应用的状态保持一致,但是对于很多应用来讲,它们所带来的开销是难以估量的。


为了解决这个问题,React 引入了一个简单的替代方案Context API,它允许开发人员通过组件树共享数据,而不必在每个级别手动传递属性。


Recoil 为开发人员提供了另外一个解决方案,这些开发人员可能想要避免使用那些已经成熟的状态管理系统,但是又觉得 Context API 太具局限性。


如官方文档所述,Recoil 通过解决 Context API 的三个问题实现了这一点。


  1. 组件状态只能通过往上推送至公共祖先来进行共享,这可能包含一个巨大的树,随后这个树需要重新渲染。

  2. Context 只能存储一个值,而不能存储一组不确定的值,让每个值都有自己的消费者。

  3. 以上两点使得将树的顶部(状态必须要存在的地方)与树的叶子(状态被使用的地方)进行代码分离变得非常困难。


Recoil 使用 Atom 和 Selector 来管理应用的数据。每个 Atom 包含一个唯一的键和一段它将要管理的数据,而每个 Selector 代表一个衍生状态,该衍生状态可以是基于多个 Atom 的。


关于如何组合这两者,有一个非常棒的样例,那就是流行的 todo 应用,它包含了两个 Atom 和一个 Selector。


为了管理应用的数据,我们创建了两个 Atom。第一个包括原始的列表项,而第二个包含了过滤器(“已完成”、“未完成”和“全部”等)。


为了展现这个 todo 列表,我们使用 Selector 基于选中的过滤器来过滤 todo 项。


关于完整的 todo 教程和良好的入门指南,请访问官方文档


Recoil 基于 MIT 许可证发布,可以通过GitHub获取。


请注意,Recoil 只是一个实验性的解决方案,还不能在生产环境的应用中使用。


原文链接:Recoil - a New State Management Library for React


2020-06-02 09:253137

评论

发布
暂无评论
发现更多内容

微前端学习笔记(5):从import-html-entry发微DOM/JS/CSS隔离

zhoulujun

微前端

Partisia Blockchain 加速市场进程,生态通证$MPC 登录MEXC

股市老人

华为为什么能吸引全球人才?

YG科技

cleanmymacX最新破解版 cleanmymacX激活码分享

禁止废话

#Mac 软件包 苹果软件 CleanMyMac X破解版

在 Kubernetes 云平台上训练和部署生成式 AI 大模型

亚马逊云科技 (Amazon Web Services)

生成式人工智能

英特尔CEO帕特·基辛格:AI正推动业界进入创新黄金时代,影响力堪称空前

E科讯

思维图是什么,怎么画?这6个好用的思维图App一定要知道!

彭宏豪95

职场 思维导图 在线白板 办公软件 绘图软件

时隔三年,一些感受

三爻

蓝易云 - nginx教程:map $http_upgrade $connection_upgrade升级连接配置解读

百度搜索:蓝易云

运维 网络 HTTP websocket

博查AI搜索首发多智能体搜索,提供答案更丰富的搜索体验

科技热闻

【案例分享】思牧科技助力德信诚包装突破信息化困境

明道云

微前端学习笔记(4):从微前端到微模块之EMP与hel-micro方案探索

zhoulujun

微前端

$MPC 登录MEXC,加速Partisia Blockchain 生态市场进程

股市老人

天润融通助力浪鲸卫浴,智能化革新引领客户服务新高度

天润融通

人工智能 天润融通 浪鲸卫浴

Linux设备驱动系列(15) —— 创建自定义工作队列

Linux内核拾遗

Linux C语言 linux开发 Linux内核 工作队列

CleanMyMac X一直提示输入密码的解决方案

禁止废话

#Mac CleanMyMac X 售后服务 苹果软件

Partisia Blockchain 加速市场进程,生态通证$MPC 登录MEXC

大瞿科技

蓝易云 - javaee springMVC的简单使用jsp页面在webapp和web-inf目录下的区别

百度搜索:蓝易云

Java Linux 运维 Web webapp

Partisia Blockchain 加速市场进程,生态通证$MPC 登录MEXC

加密眼界

$MPC 登录MEXC,加速Partisia Blockchain 生态市场进程

石头财经

科技赋能教育数字化转型,天翼云助推教育强国建设

编程猫

Partisia Blockchain生态通证$MPC登录MEXC,市场进程加速

西柚子

蓝易云 - linux教程:sed替换以某字符串开头的行

百度搜索:蓝易云

json 云计算 服务器 sed 云服务器

30天拿下Rust之智能指针

希望睿智

rust 智能指针

推动低代码开发 赋能办公方式转变

快乐非自愿限量之名

低代码 企业转型

Partisia Blockchain 加速市场进程,生态通证$MPC 登录MEXC

BlockChain先知

这是真的!华为精品课1元就能学!

YG科技

蓝易云 - Java:jackson实现json缩进美化输出

百度搜索:蓝易云

Java json 云计算 Linux 运维

Recoil:面向React的新的状态管理库_大前端_Guy Nesher_InfoQ精选文章