Redux的简单概念介绍

Redux是遵循只存储应用的真相单一来源的原则设计的,如果你了解后端EventSourcing原理,应该知道两者都是遵循这一原则设计的,对于Redux每个动作激活一个reducer,reducer产生新的状态并保存。如下图:


在Redux中, 每个应用状态都保存在全局状态,这个全局状态是不可变的,能够由View Provider通过逻辑访问,当用户触发一个交互,比如鼠标点按,这将触发一个动作Action到系统,这是通过使用一个被传递给View Provider回调函数实现的,这个动作action将被Redux的存储获取, 通过其中间件触发一系列转换,最后传递给一系列有前后顺序的reducer,通过reducer修改全局状态。

Redux核心概念是:
存储store,
action动作
修改状态的reducer函数

前面两个比较容易理解,我们看看reducer函数:
reducer是一个用于状态切换的纯函数,能够获得当前状态和当前动作action作为其输入,输出则是下一个状态,很重要概念是reducer是纯函数,没有副作用,每次你提供同样输入,你总是获得同样的输出。

如果只有一个reducer是不可能针对每个动作action管理整个状态切换的,而是通过多个reducer以及相互组合实现这点的。每个action对应一个reducer,同时还有一个组合reducer管理这些子reducer:当一个action进来时,组合reducer首先获取这个动作然后传递这个动作给每个小的子reducer函数,每个小的子reducer函数会检查这个动作,决定是否修改对应的应用状态中的一部分,如果修改了,就是产生新状态。