@@ -3,26 +3,31 @@ import wrapActionCreators from '../utils/wrapActionCreators';
3
3
import invariant from 'invariant' ;
4
4
import _ from 'lodash' ;
5
5
6
+ const defaultMapStateToTarget = ( ) => ( { } ) ;
7
+ const defaultMapDispatchToTarget = dispatch => ( { dispatch} ) ;
8
+
6
9
export 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
+
8
18
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
11
21
) ;
12
22
13
23
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
16
26
) ;
17
27
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 ) ;
23
29
24
- //find better name
25
- const actions = finalMapDispatchToTarget ( store . dispatch ) ;
30
+ const boundActionCreators = finalMapDispatchToTarget ( store . dispatch ) ;
26
31
27
32
return ( target ) => {
28
33
@@ -31,14 +36,14 @@ export default function Connector(store) {
31
36
'The target parameter passed to connect must be a Function or a plain object.'
32
37
) ;
33
38
34
- //Initial update
35
- updateTarget ( target , slice , actions ) ;
39
+ //Initial update
40
+ updateTarget ( target , slice , boundActionCreators ) ;
36
41
37
42
const unsubscribe = store . subscribe ( ( ) => {
38
- const nextSlice = getStateSlice ( store . getState ( ) , mapStateToTarget ) ;
43
+ const nextSlice = getStateSlice ( store . getState ( ) , finalMapStateToTarget ) ;
39
44
if ( ! shallowEqual ( slice , nextSlice ) ) {
40
45
slice = nextSlice ;
41
- updateTarget ( target , slice , actions ) ;
46
+ updateTarget ( target , slice , boundActionCreators ) ;
42
47
}
43
48
} ) ;
44
49
return unsubscribe ;
0 commit comments