打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Redux,Context或Recoil:哪一种适合您的应用

  全局状态管理中三个竞争者的比较

  

  > Photo by Joshua Aragon on Unsplash

  随着全局状态管理工作的日新月异,可能很难知道该选择哪个选项。Redux在很长一段时间以来一直是被选择的库,但是由于提供了状态管理的Context API已嵌入到React本身,许多人已经宣布Redux已死。现在,随着Facebook支持的早期项目Recoil的发布,我们有了一个特定于React的库,可以轻松地与React的最新功能集成。

  但是哪一个最适合您的项目?在本文中,我将与每个库集成一个简单的应用程序,并提供一些比较和观察。这些只是我的意见-我绝对不会将我的发现作为事实提出,最终每个人都会有个人喜好。但是,我将尝试尽可能客观,并提出一些绩效方面的经验比较。

  TL; DR —您可以在此处查看最终代码(每个集成都在不同的分支中):github/jogilvyt/redux-context-recoil

  应用程序

  我构建了一个简单的待办应用程序,该应用程序呈现可以删除的项目列表以及添加新项目的表单。它使用setTimeout调用模拟API以获取结果,创建新项目并从列表中删除项目:

  

  > Basic to-do application

  为了获得性能的基准度量,我开始时根本没有全局状态管理。加载应用程序时总共有三个渲染:加载屏幕的初始渲染耗时5.3ms,项目加载后的重新渲染耗时7ms:

  

  > Rendering after the results have been fetched

  这是一个非常简单的应用程序,因此性能上的任何差异都不会很大,在更复杂的应用程序中,情况可能会有所不同。但这应该使我们对每个库的性能影响有一个非常高级的了解。

  开始之前

  对于新项目,确保您使用正确的工具来完成工作始终非常重要-因此现在是时候问问自己是否真的需要全局状态管理了。许多简单的应用程序都能很好地运行,并且更易于维护,而无需引入外部库甚至Context API的所有开销。作为UI工程师,我们会不顾一切地跳入每个闪亮的新工具,因此在声誉方面享有一定声誉。不要陷入陷阱-在进行整合之前,请确保您确实确实需要一个全局状态管理系统。

  Redux

  Redux可能是最完善的全局状态管理工具。它与框架无关,这意味着它已在整个前端世界中流行,并且有一段时间,当您需要超越本地状态时,它确实是唯一的选择。但是,随着最近添加的Context API和新的挑战者Recoil,Redux仍然可以在现代React应用程序中保持自己的地位吗?

  性能

  让我们从性能开始。初始加载时,只有两个渲染,而基线只有三个。但是,整体渲染时间会稍长一些-提取加载状态后需要6毫秒,而提取项目后则需要10.6毫秒来渲染列表:

  

  > Redux: rendering after the results have been fetched

  添加新项目后进行渲染需要2.9毫秒,而删除项目后要进行渲染需要2毫秒。因此,总的来说,除了加载应用程序时的初始开销外,性能还相当出色。

  开发人员经验

  对我而言,这一直是Redux的一大弊端。一直感觉需要很多样板来使其正常工作,并且在一个应用中使用多个reducer时很容易陷入重复。在这种情况下,我们有一个商店,一个reducer和三个动作,这对于这个基本的东西来说感觉像很多代码。

  话虽如此,Redux擅长执行开发人员最佳实践,提供了易于遵循的模式,因此在构建功能时不必对实现进行太多决策。我还喜欢它如何将API请求抽象到操作中,从而将所有操作都集中在一个地方。当您知道去哪里更新API调用而不是深入研究组件以查找发出请求的组件时,这要容易得多。

  用户体验

  使用Redux管理加载和错误状态需要一些自定义实现。就我而言,我跟踪化简器中的全局isLoading变量,然后管理用于在每个组件中添加和删除项目的加载状态。这是相当标准的东西,并不难构建,但这是Recoil真正发挥作用的领域之一-稍后再介绍!

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
如何利用 React Hooks 管理全局状态
Flutter完整开发实战详解(十二、全面深入理解状态管理设计)
0到1:闲鱼高复杂度高性能社区圈子开发实录
07 | 状态管理:Flutter 状态管理及对比选型
状态管理之 Redux & React Redux
​网页开发离不开的12款扩展插件
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服