写点什么

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

评论

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

编译调试插件功能总结

乌龟哥哥

8月月更

2022-Java后端工程师面试指南-(MySQL)

自然

8月月更

自己动手制作elasticsearch的ik分词器的Docker镜像

程序员欣宸

elasticsearch 8月月更

谈谈程序员如何具备领导力

宇宙之一粟

领导力 8月月更

mysql进阶(二十八)GRANT REVOKE用法详解

No Silver Bullet

MySQL 签约计划第三季 8月月更 grant revoke

一种用于保证多方子系统数据一致性的方法

阿提说说

数据一致性 多方子系统 异构系统

轻松完成接口测试及接口文档

Xd

Java 后端 接口测试

2021-Java后端工程师面试指南-(SpringBoot+SpringCloud)

自然

Spring Boot CLI spring cloud stream 8月月更

C51 基本函数、中断函数和库函数的详解

timerring

8月月更

【华为云至简致远】还在烦恼成本高、运维难?华为云数据库给你一个标准答案!

sofiya

基于华为云ECS的目标检测与识别的昇腾AI开发体验【华为云至简致远】

sofiya

OAuth2的定义和运行流程

阿提说说

spring security Oauth

2022秋招前端面试题(三)(附答案)

helloworld1024fd

前端面试

jvm(一 )内存区域的划分

想要飞的猪

JVM JVM运行时数据区

朴素贝叶斯分类-西瓜分类 python

Five

贝叶斯公式 Python. 8月月更

头脑风暴:打家劫舍

HelloWorld杰少

8月月更

docker下,一行命令搭建elasticsearch6.5.0集群(带head插件和ik分词器)

程序员欣宸

elasticsearch 8月月更

C++中const关键字的作用总结

桑榆

c++ 8月月更

设计电商秒杀系统

爱晒太阳的大白

git 分支

Jason199

git fetch 8月月更

Promise的点点滴滴

坚果

开源 8月月更

Spring(三、依赖注入)

开源 bean Spring JPA 8月月更

华为云数据库,更安全、更方便、更省钱的选择【华为云至简致远】

sofiya

未来社区的人车房隐私数据权属确认方法

阿提说说

区块链 物联网 隐私保护

为什么我要说:柯里化 == 闭包+递归?

掘金安东尼

JavaScript 前端 8月月更 柯里化

【字体反爬】的起点,月票数解析,一个小小的Python案例

梦想橡皮擦

Python 爬虫 8月月更

2022-Java后端工程师面试指南-(Redis)

自然

面试题 reis 8月月更

基于华为云ModelArts和弹性云服务器ECS的AI全流程开发——昇腾工业质检应用实战【华为云至简致远】

sofiya

2022秋招前端面试题(四)(附答案)

helloworld1024fd

前端面试

开源一夏 | 这么火的ES,SpringBoot结合ElasticSearch7实现多条件复合查询

知识浅谈

开源 8月月更

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