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()等不纯的方法,因为每次会得到不一样的结果

最新文章

  1. virtualenv
  2. 激活Microsoft Office professional plus 2010
  3. DOM事件机制进一步理解
  4. 检测IP地址的正则表达式
  5. 为什么要使用 Node.js
  6. 转:RTC搭建android下三层应用程序访问服务器MsSql-客户端
  7. ASP.NET访问网络映射盘&实现文件上传读取功能
  8. Windows-008-VirtualBox 安装 Win7 前沿配置详解
  9. Phalcon 的分流bootstrap 设计 主程序入口
  10. Set的并集
  11. Python获取当地的天气和随意城市的天气
  12. JSON字符串和JS对象
  13. C#调用WebService时插入cookie
  14. Python语言说明
  15. netty 粘包的解决策略
  16. Mybatis获取插入记录的自增长ID
  17. (16)The beauty of what we'll never know
  18. Microsoft Dynamics CRM 2013 相关安装包下载
  19. python logging 日志
  20. MySQL中分组取第一条, 以及删除多余的重复记录

热门文章

  1. Protobuf多协议
  2. coredump之栈溢出
  3. 廖雪峰Git教程3
  4. @MatrixVariable的使用
  5. Sword 第三方库介绍一
  6. Flutter Dart List.map() 获取下标
  7. 【Redis】Redis 事务
  8. 报错:sqoop2执行job时:Exception: Job Failed with status:3
  9. [LeetCode] 113. Path Sum II 路径和 II
  10. CentOS的vsftp修改默认配置路径方法