50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

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

评论

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

架构师训练营第 3 周作业

netspecial

极客大学架构师训练营

架构师训练营—第三周作业

Geek_shu1988

架构师训练营第三周学习总结

成长者

极客大学架构师训练营

架构师训练营第一期 - 第三周课后 - 作业一

极客大学架构师训练营

区块链12年:应用在了哪些领域?

CECBC

区块链 教育 金融 物流

Ui Automator 框架和Ui Automator Viewer你会用吗?附送「必备adb命令」拿走不谢 !

清菡软件测试

android

极客时间 - 架构师一期 - 第三周作业

_

极客大学架构师训练营 第三周

LeetCode题解:242. 有效的字母异位词,哈希表一次循环,JavaScript,详细注释

Lee Chen

大前端 LeetCode

LeetCode题解:242. 有效的字母异位词,哈希表两次循环,JavaScript,详细注释

Lee Chen

大前端 LeetCode

架构师训练营—第三周学习总结

Geek_shu1988

架构师训练营第 1 期 -- 第三周学习总结

发酵的死神

极客大学架构师训练营

智能的本质—DIKW结构

良少

学习 AI 智能 DIKW

最完整的PyTorch数据科学家指南(1)

计算机与AI

学习 PyTorch

互联网上正规平台的辨别方法?被AG黑网投黑钱拿回的技巧方案

InfoQ_6b6a6317a692

为什么go中的receiver name不推荐使用this或者self

Gopher指北

后端 Go 语言

架构师训练营 1 期第 3 周:代码重构 - 总结

piercebn

极客大学架构师训练营

架構師訓練營第 1 期 - 第 02 周總結

Panda

架構師訓練營第 1 期

架构师训练营第 1 期 -- 第三周作业

发酵的死神

极客大学架构师训练营

第三周总结

_

极客大学架构师训练营 第三周总结

go语言设计的理解-工程化语言

superman

Java 面向对象编程 Go 语言

区块链到底是什么?它为什么如此受人关注

CECBC

区块链 金融

spring-boot-route(一)Controller接收参数的几种方式

Java旅途

Java Spring Boot

架构师训练营第三周命题作业

成长者

极客大学架构师训练营

一个草根的日常杂碎(10月1日)

刘新吾

随笔杂谈 生活记录 社会百态

为啥你用@JsonFormat注解时,LocalDateTime会反序列化失败?

冰河

springboot LocalDateTime JsonFormat

架构师训练营第 1 期 - 第三周学习总结

Anyou Liu

极客大学架构师训练营

架構師訓練營第 1 期 - 第 02 周作業

Panda

架構師訓練營第 1 期

如何理解区块链行业的安全问题?

CECBC

区块链 人工智能 大数据

【读书笔记二】《企业IT架构转型之道-阿里巴巴中台战略思想与架构实战》

Man

中台 分布式 研发管理

第三周用组合设计模式编写程序

Geek_fabd84

架构师训练营第一期 - 第三周课后 - 作业二

极客大学架构师训练营

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