Dispatch ——action——> Reducer ——state——> Publish ——state——> Subscribe——> Mounted
Dispatch触发一个action,Reducer接收到action后,
计算得到一个新的state,
state产生后,Store发布一个事件,
把新的state状态通知给所有的订阅者也就是相关的component,
订阅者通过Subscribe事件监听到新的state值,
然后重新set到组件的props上,
重新渲染。
单一数据源、state 是只读的和使用纯函数执行修改。
action 就是普通对象,
因此它们可以被日志打印、序列化、储存,以及用于调试或测试的后期回放。
通过 reducer 创建一个 store,每当我们在 store 上 dispatch 一个 action,store 内的数据就会相应地发生变化。
创建store的时候,要先创建reducer,把reducer传递进store下的index.js
reducer里放的就是存放的数据
reducer可以接收state,但是绝不能修改state
1、store必须是唯一的
2、只有store能够改变自己的内容,reducer不能改
3、reducer必须是纯函数(给定固定的输入,就一定会有给定的输出,return的值是一定的)即不能有异步操作,也不能有关于时间定时器之类的操作
connect() 接收四个参数,它们分别是 mapStateToProps,mapDispatchToProps,mergeProps和options。
异步
request 和receive需要定义成两个不同的action,
用户trigger的是request,
api回调trigger receive
[https://zhuanlan.zhihu.com/p/26598001]
[https://juejin.im/post/5cd0f107f265da035f6fecd3]
[https://juejin.im/post/5b76b495e51d455f997fc77f#heading-4]
网友评论