单页应用(SPA)越来越复杂,导致代码必须管理好几份状态数据:
- 从服务端拉来的数据
- 本地缓存的数据,如上一次从服务端拉来的数据
- 本地新增或者变化的、并且未同步到服务端的数据
前端开发也越来越复杂:
- UI 的状态也越来越复杂,比如需要管理路由、tab、分页控件等等。
- 一个 model 数据的变化,可能导致 UI 的更新,可能继续导致其他的 model 也跟着变化。我们已经难以理解我们构建的系统
- 对前端的要求更高了,比如 optimistic updates, server-side rendering, fetching data before performing route transitions
Redux 认为是这两个概念合在一起引起的混乱:数据可变性(mutation)及异步性(asynchronicity)。(这块我还不太理解,后面随着深入用 Redux 再加强理解。)于是它试图解决一个问题,make state mutations predictable,让状态数据的变化可以被预期。