写点什么

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

评论

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

开源机器学习软件对AI的发展意味着什么?

OneFlow

人工智能 深度学习 开源

巧用Golang泛型,简化代码编写

百度Geek说

Go golang 企业号 2 月 PK 榜

上新啦|请查收StarRocks 2.5 LTS 版本特性介绍

StarRocks

数据库 大数据

新思科技:数字赋能,安全先行

InfoQ_434670063458

泛娱乐社交出海解决方案技术实践

网易云信

即时通讯IM 音视频技术

测试开发 | AppCrawler 自动遍历测试实践(二):定制化配置

霍格沃兹测试开发学社

八股文的天花板,没到35k的Java开发都值得好好读一读

程序知音

java面试 后端技术 八股文 Java面试八股文 Java构架师

Apache Kafka入门级教程原创

宋小生

kafka Kafka Producer

云小课|创建DDS只读节点,轻松应对业务高峰

华为云开发者联盟

数据库 后端 华为云 企业号 2 月 PK 榜 华为云开发者联盟

便捷模型迭代优化,算法模型支持更新到已部署服务、已有项目|ModelWhale 版本更新

ModelWhale

人工智能 机器学习 数据分析 团队协同 编程建模

Kratos微服务工程Bazel构建指南

微服务 CMS Kratos Monorepo bazel

还在用 OpenFeign?来试试 SpringBoot3 中的这个新玩意!

江南一点雨

spring springboot

测试开发 | AppCrawler 自动遍历测试实践(三):动手实操与常见问题汇总

霍格沃兹测试开发学社

如何快速完成API设计,mock数据给到前端?

不想敲代码

APi设计 apipost API调试

一文带你掌握物联网Mqtt网关搭建背后的技术原理

华为云开发者联盟

后端 物联网 华为云 企业号 2 月 PK 榜 华为云开发者联盟

云原生场景下实现编译加速

京东科技开发者

Java golang 缓存 编译 企业号 2 月 PK 榜

系统运维 SysOM profiling 在云上环境的应用观测实践 | 龙蜥技术

OpenAnolis小助手

开源 cpu 系统运维 profiling 龙蜥技术

下一代编解码技术Ali266在视频超高清领域的应用展望

阿里云CloudImagine

云计算 Ali266 超高清

如何又快又好实现Catalog系统搜索能力?火山引擎DataLeap这样做

字节跳动数据平台

大数据 数据治理 数据研发 企业号 2 月 PK 榜

StarRocks荣获2022年度最具潜力数据库奖

StarRocks

数据库 大数据

利器 | AppCrawler 自动遍历测试工具实践(一)

霍格沃兹测试开发学社

关于 NGINX Kubernetes Gateway,你需要知道的 5 件事

NGINX开源社区

nginx NGINX Ingress Controller NGINX Kubernetes Gateway 企业号 2 月 PK 榜

泛娱乐社交出海解决方案技术实践

网易智企

即时通讯IM 音视频通话

“一键”模型迁移,性能翻倍,多语言AltDiffusion推理速度超快

OneFlow

人工智能 深度学习

Getaverse 1月总结 | 节点数突破6200+

Geek_Web3

#区块链# 元宇宙 web3

打通对账的最后一公里——对账管理平台

元年技术洞察

数字化转型 对账 对账系统 方舟平台

JavaScript使用URL用来解析处理URL

ModStart

Dubbo 中 Zookeeper 注册中心原理分析

小小怪下士

Java zookeeper dubbo

升哲科技荣获2022年度华夏建设科学技术奖二等奖

SENSORO

对话 BitSail Contributor | 梁奋杰:保持耐心,享受创造

字节跳动数据平台

GitHub 开源 数据引擎

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