ShanikaWickramasinghe 译者
王强 策划
李俊辰 如今,大多数使用React、Vue或Angular作为前端框架的应用程序都选择了Redux作为状态管理方案。Redux之所以广受欢迎,一大原因是它只有2KB大小。
本文最初发布于Medium网站,经原作者授权由InfoQ中文站翻译并分享。
Redux的工作原理很简单:将应用程序的整个状态存放在一个中央存储中。所有组件都可以访问这一存储,因此无需在组件之间传递参数和属性。Redux的主要构建块包括动作(Action)、Reducer和存储(Store)。
先来看一下Redux是如何工作的,以便更好地了解它与替代方案之间的区别。
简而言之,来自组件的API调用将发送到Reducer。它们是根据对象的旧状态返回新状态的函数。新状态存放在存储中,存储是Redux应用程序中访问先前状态的中央实体。
除了保持应用程序状态并控制对它的访问之外,存储还允许状态更新,并通过订阅来处理侦听器的注册和注销操作。
我们为什么需要Redux的替代品?Redux看起来简单易用,但它也存在一些缺点:
学习曲线不算平缓。Redux学起来可能并不容易,因为用户必须具备函数式编程知识。
简单的更改也需要较多样板代码。由于Redux中的流(flow)是预定义的,因此你必须用它。在较小的应用程序中,样板文件的数量相对来说就更显眼了。
Redux中即使是很小的更改也会触发DOM重组过程。开发人员不喜欢这样,因为它很耗时,并且会对性能产生不利影响。
Redux的替代品有很多状态管理库可以克服Redux的缺陷。它们也都有各自的优缺点。下面我们就来看看一些最流行的选项,并探讨它们最适合什么场景。
MobX应用了响应式编程的概念来同步模型和UI。它只会更新UI中需要更新的部分,而不会完全重新加载它。MobX基于面向对象的概念和应用程序数据模型。MobX简化了类和存储的文档,其中包括应用中使用的属性和方法。它能在开发过程中快速交付UI对象以实现快速开发,并允许添加生命周期hook“