浅析Redux

163 阅读2分钟

一、Redux是什么

Redux 是 JavaScript 状态容器,提供可预测化的状态管理。Redux 除了和 React 一起用外,还支持其它界面库。我的理解就是管理数据的呗。

Redux 和 React 之间没有关系。Redux 支持 React、Angular、Ember、jQuery 甚至纯 JavaScript。但Redux 还是和 React 这类库搭配起来用最好,因为这类库允许你以 state 函数的形式来描述界面,Redux 通过 action 的形式来发起 state 变化。

二、Redux为何出现

JS需要管理的state很复杂,这让运维和更新变得困难,乃至产生其他问题,而复杂度很大程度上是来自于变化和异步这两个概念的混淆,一些库如 React 试图在视图层禁止异步直接操作 DOM 来解决这个问题,但React 依旧把处理 state 中数据的问题留给了我们,而Redux就是帮我们解决这个问题的。

三、Redux核心概念

要想更新 state 中的数据,你需要发起一个 action,为了把 action 和 state 串起来,开发一些函数,这就是 reducer,一句话就是:reducer 只是一个接收 state 和 action,并返回新的 state 的函数。

对于大型应用,需要很多这样的小函数来分别管理 state 的一部分,再开发一个 reducer 调用这这些 reducer,从而管理整个应用的 state。这就是就是 Redux 思想的全部。

四、Redux三大原则

1. 单一数据源

整个应用的 state 被储存在一棵 object tree 中,并且这个 object tree 只存在于唯一一个store 中。这样有一些好处:

  • 这让同构应用开发变得非常容易:来自服务端的 state 可以在无需编写更多代码的情况下被序列化并注入到客户端中。

  • 调试也变得容易:可以把应用的 state 保存在本地,从而加快开发速度。

  • 以前难以实现的如“撤销/重做”这类功能也变得轻而易举。

2. State 是只读的

唯一改变 state 的方法就是触发 action,action 是一个用于描述已发生事件的普通对象。

3. 使用纯函数来执行修改

为了描述 action 如何改变 state tree ,需要编写 reducers。

更多内容