redux

状态管理,react没有提供一个整个应用的状态管理,所以就有redux的出现,首先声明 redux 非必须。
redux设计原则:

  1. 单一数据源,整个应用只维护一颗state树
  2. 数据源是只读的,只有触发action,通过reducer产生新的状态才能更新state树
  3. reducer必须是纯函数,保证同样入参产生一样的结果。

redux本身就只包含4个API

  1. getState:获取当前的state数据
  2. dispatch,分发action
  3. subscribe,注册一个监听者
  4. replacereducer,更新当前store中的reducer

redux整个数据流过程如下:


image.png

react-redux,提供redux和react联接的桥梁,<provider/>和connect(),provider利用react提供的contextTypes来实现redux中的store,这样我们就可以在所有的子组件中拿到store,connect参数有四个:mapStateToprops / mapDispatchToProps / mergeProps / options(是否纯组件(pure),是否返回ref(withRef))

middleware,提供一个分类处理action的机会,我们可以检阅每个通过的action,挑选出对应类型的action进行相应操作。这个原理类似虹吸原理,外部action一层一层的进入middleware,直至处理到最里层,获取到最新的dispatch,如果这个过程中利用这个dispatch分发某个action,又会嵌套,从最外层分发开始一直next,这个原理类似koa,然后redux-thunk利用这个原理实现异步通信。

redux-promise,提供一个promise类型的middleware,实现promise方式的异步

redux-saga,提供一个基于generator方式的异步通信

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容