当前位置: 移动技术网 > IT编程>开发语言>JavaScript > redux的理解

redux的理解

2019年05月31日  | 移动技术网IT编程  | 我要评论
Redux 这里介绍下我对Redux的理解,不涉及如何使用Redux。 Redux 官网介绍: A predictable state container for JavaScript apps.(一个可预测的状态容器for js 应用) 可以看出最亮眼的就是 可预测 ,是个啥呢?是个 状态容器 那 ...

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

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网