写点什么

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:253198

评论

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

为什么你辛苦肝的博客没人看?搭框架、排版、画图技巧这些你真的懂么?

码哥字节

排版规范 写作技巧 2月月更

人人都是 Serverless 架构师 | 弹幕应用开发实战

Serverless Devs

Serverless 弹幕 应用开发

架构实战营模块七 作业

Jude

架构实战营

Go 学习路线(2022)

AlwaysBeta

Go golang Go 语言

Apache Druid 在 Shopee 的工程实践

Shopee技术团队

数据库 后端 Apache Druid

低代码实现探索(三十一)管好你的组件--元信息

零道云-混合式低代码平台

7

Geek_59dec2

职场焦虑之我对35岁危机的看法

老张

35岁危机 职场发展

(2-2|27)🤗Huggingface.Transformers是什么?

mtfelix

300天创作

【架构实战营】模块七:命题作业

wgl

「架构实战营」

腾讯员工怒怼加班文化事件:大厂的内卷,小厂有什么资格?

菜根老谭

预约小程序开发笔记一:背景与技术方案的选型

CC同学

容器编排技术 Kubernetes 学习总结|社区征文

架构精进之路

云原生 新春征文 2月日更

春节消费观察:四种愉悦感,抓住女人心

脑极体

虎年开工大吉|Hoo研究院2022年0207期区块链简报

区块链前沿News

Hoo 虎符交易所 虎符研究院 虎年

在线标准程序员计算器

入门小站

工具

盘点下近几年退役的顶级 Apache 大数据项目 - 继 Sentry,Sqoop 之后,Ambari 正式退役

明哥的IT随笔

大数据 ambari sqoop sentry

2021 Apache Pulsar 中文社区先锋奖与年度优秀案例奖出炉!

Apache Pulsar

开源 云原生 中间件 Apache Pulsar 社区

抽奖| Apache Pulsar 社区新年福袋来啦

Apache Pulsar

开源 云原生 中间件 Apache Pulsar 社区

Milvus 2.0 正式 GA

Zilliz

数据库 AI

Apache POI详解及Word文档读取示例

程序员架构进阶

Java Apache POI 2月月更

暂时不在更新

你?

云效交付篇:流水线持续交付 | 云效快速入门

阿里云云效

阿里云 DevOps 云原生 持续交付 研发

微服务从代码到k8s部署应有尽有系列(一)

万俊峰Kevin

Go 微服务 web开发 go-zero RPC框架

模块七作业

whoami

「架构实战营」

Serverless 年终技术盘点 :工业、学术、社区遍地开花

Serverless Devs

云计算 阿里云 Serverless

Python代码阅读(第74篇):单词首字母转换成大写

Felix

Python 编程 字符串 阅读代码 Python初学者

Apache Pulsar 2021 年度盘点(结尾有惊喜)

Apache Pulsar

开源 云原生 中间件 社区 Apachepulsar

Serverless 应用优化四则秘诀

Serverless Devs

Serverless

Linux之free命令

入门小站

Linux

面试突击20:进程和线程有什么区别?

王磊

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