写点什么

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

评论

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

媒体曝光:联发科天玑 9500 GPU 光追可以开到 100 帧以上

科技范儿

MyEMS开源能源管理系统实际案例分析

开源能源管理系统

开源 开源能源管理系统 MyEMS

本地IntelliJ IDEA连接开发者空间-云开发环境,进行小游戏开发

华为云开发者联盟

云主机 IntelliJ IDEA 华为开发者空间

数据治理进入深水区:智能化与国产化驱动下的行业新变局

百分点科技技术团队

使用QDeveloper账号登录Kiro IDE

IT蜗壳-Tango

华为开发者空间使用CodeArts IDE调用API实现电商平台问答助手

华为云开发者联盟

AI+ 华为云CodeArts Qwen1.5 华为开发者空间

三级等保测评流程优化实践

等保测评

基于开发者空间编写ODBC应用程序操作OpenGauss数据库

华为云开发者联盟

GaussDB(for openGauss) ODBC C++ API 接口 华为开发者空间

闭源精密战与开源敏捷性:能源管理系统的双线引领

开源能源管理系统

开源 能源管理系统

图分割算法荣获SC21时间检验奖

qife122

算法优化 图分割

基于语言模型架构的时间序列预测技术

qife122

机器学习 时间序列

HarmonyOS Next 高效开发模板与组件库(20250730更新)| 鸿蒙应用开发必备资源 Part1(含开发案例)

准时不早退的机器猫.

鸿蒙 HarmonyOS 模板 开发案例

基于Terraform构建AI会议摘要系统

qife122

人工智能 语音识别

零代码生成 3D 游戏:基于 Amazon Q Developer CLI 和 Three.js 的实践

亚马逊云科技 (Amazon Web Services)

基于多代理协作的智能电子取证解决方案

qife122

人工智能 多代理系统

【开源项目】:基于go和antlr4实现一款高效跨语言的二进制协议编译器,释放你的协议开发效率!

歆晨技术笔记

golang 编译器 二进制 #java C++

多语言自监督忠实度评估框架解析

qife122

自然语言处理 多语言模型

物理信息随机投影神经网络的线性稳定性分析

qife122

神经网络 数值分析

“代码跑着跑着,就变快了?”——揭秘Java性能幕后引擎:即时编译器

poemyang

编译原理 Java虚拟机 即时编译器 JIT编译器 #java

大数据-60 Kafka 消息消费与心跳机制详解:原理、流程及参数调优

武子康

Java 大数据 kafka 分布式

哈尔滨二级等保设备选型指南

等保测评

【苍狮技术团队】RAGFlow 0.20.0 发布:全面升级 Agentic Workflow,支持多智能体协同与MCP,新增10大模板,支持Docker离线安装

苍狮技术团队

生成式AI实现多模态信息检索新突破

qife122

信息检索 生成式AI

合合信息亮相WAIC大会—推动AI鉴伪技术革新,打造可信数字世界【人工智能大会最新AI安全技术成果】

申公豹

人工智能

大模型训练故障恢复效率提升方案

qife122

机器学习 容错机制

Conc,一个神奇的Go语言并发利器!

左诗右码

无光不AI:AI算力,向光而逐

脑极体

AI

Gunra勒索软件集团推出高效Linux变种

qife122

加密技术 勒索软件

星云低代码:低代码不再是平台,而是“中间件”

星云低代码中间件

低代码 开发工具 企业管理系统 Vue 3 #java

如何选择合适的LED显示屏像素间距?

Dylan

LED LED display LED显示屏 LED屏幕

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