redux-thunk:
1thunk1
https://www.cnblogs.com/wzndkj/p/10562563.html
是对dispatch的封装,异步逻辑放在action里。dispatch可接收对象,也可接收函数。接收函数时,先执行函数,再派发给store
2thunk2
https://www.jianshu.com/p/a27ab19d3657
将thunk传给原生api applyMiddleware方法,再将applyMiddleware传给createStore,完成了store.dispatch的调用,是对dispatch方法的增强。其实applyMiddleware就是Redux的一个原生方法,将所有中间件组成一个数组,依次执行。
store=createStore(reducers,applyMiddleware);
Redux的核心概念其实很简单:将需要修改的state都存入到store里,发起一个action用来描述发生了什么,用reducers描述action如何改变state tree 。创建store的时候需要传入reducer,真正能改变store中数据的是store.dispatch API。
redux-thunk最重要的思想,就是可以接受一个返回函数的action creator。如果这个action creator 返回的是一个函数,就执行它,如果不是,就按照原来的next(action)执行。
正因为这个action creator可以返回一个函数,那么就可以在这个函数中执行一些异步的操作。
3中间件详解
https://www.cnblogs.com/vvjiang/p/9505646.html
Redux是一个可预测的状态容器,跟React这种构建UI的库是两个相互独立的东西。
Redux要应用到React中,很明显action,reducer,dispatch这几个阶段并不需要改变,唯一需要考虑的是redux中的状态需要如何传递给react组件。
很简单,只需要每次要更新数据时运用store.getState获取到当前状态,并将这些数据传递给组件即可。
将store作为一个值传递给根组件,然后store就会一级一级往下传,使得每个组件都能获取到store的值。
但是这样太繁琐了,难道每个组件需要写一个传递store的逻辑?为了解决这个问题,那么得用到React的context玩法,通过在根组件上将store放在根组件的context中,然后在子组件中通过context获取到store。
react-redux
通过嵌套组件Provider将store放到context中,通过connect这个高阶组件,来隐藏取store的操作,这样我们就不需要每次去操作context写一大堆代码那么麻烦了。
4
https://segmentfault.com/a/1190000015042646
react-redux
connect([mapStateToProps], [mapDispatchToProps], [mergeProps], [options])
mapStateToProps 这个函数允许我们将store中的数据作为props绑定到组件上。
mapDispatchToProps,它的功能是,将action作为props绑定到子组件上。
Redux 本身提供了bindActionCreators函数,来将action包装成直接可被调用的函数。