@@ -3,26 +3,31 @@ import wrapActionCreators from '../utils/wrapActionCreators';
33import invariant from 'invariant' ;
44import _ from 'lodash' ;
55
6+ const defaultMapStateToTarget = ( ) => ( { } ) ;
7+ const defaultMapDispatchToTarget = dispatch => ( { dispatch} ) ;
8+
69export default function Connector ( store ) {
7- return ( mapStateToTarget , mapDispatchToTarget = dispatch => ( { dispatch} ) ) => {
10+ return ( mapStateToTarget , mapDispatchToTarget ) => {
11+
12+ const finalMapStateToTarget = mapStateToTarget || defaultMapStateToTarget ;
13+
14+ const finalMapDispatchToTarget = _ . isPlainObject ( mapDispatchToTarget ) ?
15+ wrapActionCreators ( mapDispatchToTarget ) :
16+ mapDispatchToTarget || defaultMapDispatchToTarget ;
17+
818 invariant (
9- _ . isFunction ( mapStateToTarget ) ,
10- 'mapStateToTarget must be a Function. Instead received $s.' , mapStateToTarget
19+ _ . isFunction ( finalMapStateToTarget ) ,
20+ 'mapStateToTarget must be a Function. Instead received $s.' , finalMapStateToTarget
1121 ) ;
1222
1323 invariant (
14- _ . isPlainObject ( mapDispatchToTarget ) || _ . isFunction ( mapDispatchToTarget ) ,
15- 'mapDispatchToTarget must be a plain Object or a Function. Instead received $s.' , mapDispatchToTarget
24+ _ . isPlainObject ( finalMapDispatchToTarget ) || _ . isFunction ( finalMapDispatchToTarget ) ,
25+ 'mapDispatchToTarget must be a plain Object or a Function. Instead received $s.' , finalMapDispatchToTarget
1626 ) ;
1727
18- let slice = getStateSlice ( store . getState ( ) , mapStateToTarget ) ;
19-
20- const finalMapDispatchToTarget = _ . isPlainObject ( mapDispatchToTarget ) ?
21- wrapActionCreators ( mapDispatchToTarget ) :
22- mapDispatchToTarget ;
28+ let slice = getStateSlice ( store . getState ( ) , finalMapStateToTarget ) ;
2329
24- //find better name
25- const actions = finalMapDispatchToTarget ( store . dispatch ) ;
30+ const boundActionCreators = finalMapDispatchToTarget ( store . dispatch ) ;
2631
2732 return ( target ) => {
2833
@@ -31,14 +36,14 @@ export default function Connector(store) {
3136 'The target parameter passed to connect must be a Function or a plain object.'
3237 ) ;
3338
34- //Initial update
35- updateTarget ( target , slice , actions ) ;
39+ //Initial update
40+ updateTarget ( target , slice , boundActionCreators ) ;
3641
3742 const unsubscribe = store . subscribe ( ( ) => {
38- const nextSlice = getStateSlice ( store . getState ( ) , mapStateToTarget ) ;
43+ const nextSlice = getStateSlice ( store . getState ( ) , finalMapStateToTarget ) ;
3944 if ( ! shallowEqual ( slice , nextSlice ) ) {
4045 slice = nextSlice ;
41- updateTarget ( target , slice , actions ) ;
46+ updateTarget ( target , slice , boundActionCreators ) ;
4247 }
4348 } ) ;
4449 return unsubscribe ;
0 commit comments