三大核心概念
- action
- reducer
- store 在正式讲redux之前,先梳理一下前端对于数据处理的问题,我们先来了解一下MVC ~
MVC
它是一个出现在传统后端的 UI 解决方案,用于降低 UI 的复杂度,以及与UI关联的数据复杂度问题的方案。
- 传统的服务端的 MVC 模式:
1. 服务端需要响应一个完整的HTML
2. 该HTML中包含页面所需要的全部数据
3. 浏览器仅仅负责渲染整个HTML源代码
这种方式被称为: 服务端渲染,组装页面由后端完成,数据和视图统一由服务端组装,然后一起发送给页面
缺点
1、后端UI与数据复杂度剧增,一个页面又要处理UI显示,又要考虑数据渲染。
MVC模式解决了以上的问题
Controller: 处理请求,组装这次请求需要的数据
Model:需要用于UI渲染的数据模型
View:视图,用于将模型组装到界面中
前端MVC模式的困难
1、前端的 controller是面向用户,用户的操作是未知的,所以前端的controller比服务端要复杂得多
2、对于组件化的框架(VUE、React),它们使用的是单向数据流。若需要共享数据,则必须将数据提升到顶层组件,然后数据再一层一层传递,极其繁琐。 虽然可以使用上下文来提供共享数据,但对数据的操作难以监控,容易导致调试错误的困难,以及数据还原的困难。
前端需要一个独立的解决方案
flex
facebook 提出的数据解决方案, 首次引入了 action的概念。
- action:是一个普通的对象,用于描述要干什么,action是触发数据变为的唯一条件
- store:表示数据仓库, 用于存储共享数据,根据action的描述来改变仓库中的数据。
Redux
在 Flux 基础上引入了 reducer概念 reducer:处理器,根据action的描述,来判断怎么对数据进行处理,返回的新数据会被仓库重新保存下来