redux的3个重要概念
- store 就是用来存放应用的各种状态的
- action 就是用来描述应用发生了什么动作的,注意理解他是对动作的描述
- reducer 就是用来处理应用的动作,并且决定怎么去更新应用存放在store里面的状态。
redux的3个原则
- 应用的所有状态存储为redux store的单一对象
- 应用不能直接更改store存储的状态,你需要让redux通过action来知道需要更改状态
- 你需要通过写一个reducer函数来更新状态,reducer解释两个参数,(之前的状态,action),函数返回最新的state.
action 和 action creator
reducer
reducer根据action的type做相应的动作。
store是怎么实现保存应用的状态的?
创建store的时候,需要传的reducer参数给到store. 而reducer里面,保存了应用的状态。
const store = createStore(reducer)
整个处理流程,如下图
所以redux的整个流程,用大白话总结起来:顾客[app] 朝店里[store],用喇叭[actiong creator]喊了声[dispatch]买蛋糕[action],店员[reducer]听到后,启动买蛋糕的流程[去架子上拿蛋糕,库存减1…]. 顾客不能直接自己到架子上拿蛋糕[app 不能直接操作状态],否则就容易乱套。
++ 对reducer函数里面的 …state 的理解
…state 是对原来的 state 对象进行了浅拷贝,但这个拷贝过程并不涉及对 state 变量本身的重新赋值。它实际上是在创建一个新对象,并且这个新对象包含了原 state 对象中的所有属性和对应的值。这个新对象随后会用新的值更新特定的属性,而不影响原始的 state 对象。
在 Redux 中,reducer 函数必须是纯函数,意味着它们不能修改其接收到的输入参数,包括 state。因此,我们使用对象扩展运算符 … 来创建 state 的一个新的副本,然后在这个新副本上做出修改并返回,而原来的 state 对象保持不变。这样做是为了保持状态的不可变性,它是 Redux 架构中非常重要的一个概念。