redux和react是怎么配合的?

react-redux提供connect和provider两个基友,他们connect将组件和redux关联起来,provider将store传递给组件,组件通过dispatch发出action, store根据action的type属性调用对应的reducer并传入state和这个action,reducer对state进行处理返回一个新的state放入store, connect监听到store的变化,调用setState更新组件,此时组件的props也就跟着发生变化。

Provider:

   provider是一个组件,它接受store作为props,然后通过context往下传,这个react中任何组件都可以通过context获取store;

 

connect: 

    connect(mapStateToProps, mapDispatchToProps, mergeProps, options)是一个函数,它接受四个参数并且返回一个函数—wrapWithConnect,wrapWithConnect它接受一个组件作为参数wrapWithConnect(component), 它内部定义一个新的组件connect(容器组件)并将传入的组件作为connect的子组件然后return出去。

 

mapStateToProps(state.[ownPros]):

mapStateToProps接受两个参数,store的state和自定义的props,并返回一个新的对象,这个对象会作为props的一部分传入UI组件。我们可以根据组件所需要的数据自定义返回一个对象,ownProps的变化也会触发mapStateToProps

 

mapDispatchToProps(dispatch,[ownProps]):

mapDispatchToProps如果是对象,那么会和store绑定作为props的一部分传入UI组件。如果这个函数接受两个参数,bindActionCreators会将action和dispatch绑定并返回一个对象,这个对象会和ownProps一起作为props的一部分传入UI组件,所以不论mapDispatchToProps是对象还是函数,它最终都会返回一个对象,如果是函数,这个对象的key值是可以自定义的。

 

 

posted @ 2020-09-23 16:09  Swift5  阅读(139)  评论(0)    收藏  举报