@levinzhang
2020-05-30T09:05:37.000000Z
字数 1058
阅读 624
by
Recoil是Facebook推出的一个全新的、实验性的状态管理库,它解决了使用现有Context API在构建较大应用时所面临的很多问题。
Recoil是Facebook推出的一个全新的、实验性的JavaScript状态管理库,它解决了使用现有Context API在构建较大应用时所面临的很多问题。
因为React主要是一个UI库,开发人员通常会在使用React的同时使用一个状态管理方案以简化数据的处理。
很多现有的状态管理方案都是基于React在2014年引入的Flux架构的。然而,尽管像Redux和MobX这样的库能够确保应用的状态保持一致,但是对于很多应用来讲,它们所带来的开销是难以估量的。
为了解决这个问题,React引入了一个简单的替代方案Context API,它允许开发人员通过组件树共享数据,而不必在每个级别手动传递属性。
Recoil为开发人员提供了另外一个解决方案,这些开发人员可能想要避免使用那些已经成熟的状态管理系统,但是又觉得Context API太具局限性。
Recoil通过解决Context API的三个问题实现了这一点,正如官方文档所述:
Recoil使用Atom和Selector来管理应用的数据。每个Atom包含一个唯一的键和一段它将要管理的数据,而每个Selector代表一个衍生状态,该衍生状态可以是基于多个Atom的。
关于如何组合这两者,有一个非常棒的样例,那就是流行的todo应用,它包含了两个Atom和一个Selector。
为了管理应用的数据,我们创建了两个Atom。第一个包括原始的列表项,而第二个包含了过滤器(“已完成”、“未完成”和“全部”等)。
为了展现这个todo列表,我们使用Selector基于选中的过滤器来过滤todo项。
关于完整的todo教程和良好的入门指南,请访问官方文档。
Recoil基于MIT许可证发布,可以通过GitHub获取。
不要忘记Recoil被认为是一个实验性的解决方案,可能还不能在生产环境的应用中使用。