# Redux入门

Redux 是 JavaScript 状态容器,提供可预测化的状态管理。

可以让你构建一致化的应用,运行于不同的环境(客户端、服务器、原生应用),并且易于测试。不仅于此,它还提供 超爽的开发体验,比如有一个时间旅行调试器(redux-devtools) (opens new window)可以编辑后实时预览。

Redux 除了和 React (opens new window) 一起用外,还支持其它界面库。

Redux 由 Flux (opens new window) 演变而来,但受 Elm (opens new window) 的启发,避开了 Flux 的复杂性。

# 概念

# 动机

JavaScript 中管理状态的难点:

  • JavaScript 需要管理比任何时候都要多的 state (状态)
  • 管理不断变化的 state 非常困难:state 在什么时候,由于什么原因,如何变化已然不受控制。
  • 来自前端开发领域的新需求,如更新调优、服务端渲染、路由跳转前请求数据等等。

Redux 试图让 state 的变化变得可预测

# 三大原则

# 单一数据源

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

# State 是只读的

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

# 使用纯函数来执行修改

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