redux的理解
2024-08-22 19:19:21
Redux
这里介绍下我对Redux的理解,不涉及如何使用Redux。
Redux 官网介绍: A predictable state container for JavaScript apps.(一个可预测的状态容器for js 应用)
可以看出最亮眼的就是可预测,是个啥呢?是个状态容器
那么首先它是个状态容器,状态容器解决了什么问题呢?
- 解决了react中组件间通信问题,比如:好几个组件公用数据,一个组件要改变另外一个组件的数据,一个组件需要改变全局状态等这些场景。
如果你的应用比较简单,那就完全可以不用Redux,Redux 的创造者 Dan Abramov 说:
只有遇到 React 实在解决不了的问题,你才需要 Redux 。
可预测指的是什么?
- 可预测指的是,知道一个动作之后,会发生什么。因Redux,你清楚的知道什么发生了改变(action),改变之后的数据是什么样的(store/state),以及发生了哪些改变(Redux-devtool 中的 action 记录)。
是怎么做到可预测的?
- 单一数据源,应用只能有一个store
- 所有数据都是只读的,要想修改数据,必须 dispatch 一个 action 来描述什么发生了改变
- 当处理 action 时,必须生成一个新的 state,不得直接修改原始对象
Redux的设计思想是?
- Web 应用是一个状态机,视图与状态是一一对应的。
- 所有的状态,保存在一个对象里面。
Redux之Reducer 纯函数
也就是说,只要是同样的输入,必定得到同样的输出。由于 Reducer 是纯函数,就可以保证同样的State,必定得到同样的 View,因此Reducer里不能改变state,必须返回一个全新的state对象。
纯函数是函数式编程的概念,必须遵守以下一些约束:
不得改写参数
不能调用系统 I/O 的API
不能调用Date.now()或者Math.random()等不纯的方法,因为每次会得到不一样的结果
最新文章
- virtualenv
- 激活Microsoft Office professional plus 2010
- DOM事件机制进一步理解
- 检测IP地址的正则表达式
- 为什么要使用 Node.js
- 转:RTC搭建android下三层应用程序访问服务器MsSql-客户端
- ASP.NET访问网络映射盘&;实现文件上传读取功能
- Windows-008-VirtualBox 安装 Win7 前沿配置详解
- Phalcon 的分流bootstrap 设计 主程序入口
- Set的并集
- Python获取当地的天气和随意城市的天气
- JSON字符串和JS对象
- C#调用WebService时插入cookie
- Python语言说明
- netty 粘包的解决策略
- Mybatis获取插入记录的自增长ID
- (16)The beauty of what we'll never know
- Microsoft Dynamics CRM 2013 相关安装包下载
- python logging 日志
- MySQL中分组取第一条, 以及删除多余的重复记录